当前位置: 首页 > 知识库问答 >
问题:

Spring Boot+Hibernate Rest Api控制器获取状态404

干鑫鹏
2023-03-14
@RestController
@RequestMapping(value="/students/")
public class studentController {

@Autowired
private StudentService service;

@RequestMapping(value="getstudent",method=RequestMethod.GET)
public Collection<Student> getStudent(){
    return  service.getStudent();
}
@RequestMapping(value="getstudent/{id}",method=RequestMethod.GET)
public  Student getStudentById(@PathVariable("id") Integer id){
    return service.getStudentById(id);
}

@RequestMapping(value="getstudent/{id}",method=RequestMethod.DELETE)
public  void deleteStudentById(@PathVariable("id") Integer id){
     service.deleteStudentById(id);
}
@RequestMapping(value="updatestudent",method=RequestMethod.PUT,consumes=MediaType.APPLICATION_JSON_VALUE)
public void updateStudentById(@RequestBody Student student)
{
    service.updateStudent(student);
}
@RequestMapping(value="createstudent",method=RequestMethod.POST,consumes=MediaType.APPLICATION_JSON_VALUE)
public void createStudent(@RequestBody Student student){
    service.addStudent(student);

}}
@Service
@Qualifier("mysql")
public class StudentService {

@Autowired
private  StudentDaoInt dao;

@Transactional
public Collection<Student> getStudent(){
    return  dao.getStudent();
}
@Transactional
public  Student getStudentById(Integer id){
    return dao.getStudentById(id);
}
@Transactional
public void deleteStudentById(Integer id) {

     dao.deleteStudentById(id);
}

@Transactional
public void updateStudent(Student student)
{
    dao.updateStudent(student);
}
@Transactional
public void addStudent(Student student) {
    dao.addStudent(student);

}

Dao类看起来像:-

@Repository
@Qualifier("mysql")
public class StudentDaoMySql implements StudentDaoInt{

@Autowired
 private SessionFactory sessionFactory;

public void setSessionFactory(SessionFactory sf){
    this.sessionFactory = sf;
}
@Override
public Collection<Student> getStudent() {
  return sessionFactory.getCurrentSession().createQuery("from Student").list();

}

@Override
public Student getStudentById(Integer id) {
     return (Student) sessionFactory.getCurrentSession().createQuery("from Student s wehre s.id=id").list();
}

@Override
public void deleteStudentById(Integer id) {
    sessionFactory.getCurrentSession().createQuery("DELETE from Student s wehre s.id=id").executeUpdate();

}

@Override
public void updateStudent(Student student) {
    Query q=sessionFactory.getCurrentSession().createQuery("update Student  set name=:myname,age=:myage where id=:myid");
    q.setParameter("myname", student.getName());
    q.setParameter("myage", student.getAge());
    q.setParameter("myid", student.getId());
    q.executeUpdate();


}

@Override
public void addStudent(Student student) {
    sessionFactory.getCurrentSession().save(student);

}

和app.java类:

@ComponentScan({"spring","hibernate"})
@SpringBootApplication()
public class App 
{
public static void main( String[] args )
{
    SpringApplication.run(App.class, args);
}
}

包结构类似于:[1]:https://i.stack.imgur.com/sbz24.jpg

application.properties文件内容:-

spring.datasource.url = jdbc:mysql://localhost:3306/TestRest
spring.datasource.username = root
spring.datasource.password = dinga
spring.datasource.testWhileIdle = true
spring.datasource.validationQuery = SELECT 1
spring.jpa.show-sql = true
spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy =       org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQLDialect

共有1个答案

宇文修筠
2023-03-14

更改为

@ComponentScan({"com.student.studentdb"})

您需要注入LocalSessionFactoryBean而不是SessionFactory

   @Autowired
    @Qualifier("sessionFactory")
    private LocalSessionFactoryBean sessionFactory;

然后使用它获取会话

 Session session = getSessionFactory().openSession();
 类似资料:
  • 动画状态机 在游戏中,一个角色或其他动画游戏对象通常具有多个对应不同行为的动画剪辑。例如,一个角色在空闲时可能会呼吸或轻微摇摆,当收到命令时开始行走,从平台跌落时惊慌地抬起手臂。一扇门可以具有打开、关闭、卡住和被砸开动画。动画系统使用一种类似于流程图的可视系统来表示 状态机,是使你可以控制和序列化想要应用在角色或游戏对象上的动画剪辑。本章提供了有关动画系统的状态机的更多内容,并介绍如何使用它们。

  • 问题内容: 我如何获得的?通过我的意思是得到它是否有一个复选标记与否。 问题答案: 创建它时,它需要一个关键字参数。从传递。选中或取消选中该框会将包含的值设置为相应的布尔状态。可以通过以下方式访问: 已检查=> 未检查=>

  • 我想要的是这样的JSON格式: 现在我把我的代码: 我的基本数据结构定义在实体包中,使用方法可以返回字符串类型的blog标题: 模型视图中,在这个类中,我使用,它的工作原理是: 服务类代码,我使用JPA方法从MySQL:: 那么,我如何通过获得JSON格式字符串列表

  • 我想在缓存控制头中设置max age以响应。我已经写了如下,但仍然有max-age 0。我想只为一种方法设置max age,所以我不想禁用默认值。我认为应该是ovveride。 有人知道我做错了什么吗?

  • 我将验证当前活动用户是否有权限访问公司。下面我有两个示例的GET和PUT请求,以获取公司的详细信息和更新公司的详细信息。有没有可能写一个数据注释,这样我就可以指向它,或者发送一个属性,这样我就可以验证用户是否可以访问它了? 示例:

  • 问题内容: 有没有办法从AngularJS中的当前$ scope中获取控制器名称? 问题答案: 不,不可能。如果属于指令怎么办?没有属性可以检索有关该范围所属的控制器的信息。