美文网首页jpa
愉快的使用JPA进行数据查询(四)基本使用

愉快的使用JPA进行数据查询(四)基本使用

作者: 猪的尾巴 | 来源:发表于2017-07-25 23:39 被阅读151次

    这章很简单,充分利用JPA带给我们的便利进行数据操作。

    新建Teacher类以及它的Dao接口:

    image.png image.png

    重启一下项目就可以完成表的建立

    首先介绍新增功能,新建一个TeacherController,注入TeacherDao,然后用Jrebal启动项目(Jrebal启动方便热更新)

    @RestController
    public class TeacherController {
      @Autowired
      private TeacherDao teacherDao;
    }
    

    然后编写我们的测试方法

      @RequestMapping("/addTeacherTest")
      public Teacher addTeacherTest(){
        Teacher teacher = new Teacher();
        teacher.setBirthday(new Date());
        teacher.setName("jules");
        teacher.setSubject("math");
    
        teacherDao.save(teacher);
    
        return teacher;
      }
    

    新建一个Teacher,调用TeacherDao为我们实现的save方法(当主键不是空的时候,会被认为更新,所以没有update方法)。如果保存成功,teacher会被绑定主键id。编译一下工程,在浏览器输入http://127.0.0.1:8080/addTeacherTest,可以看到teacher类已经存在id:

    image.png

    同样的,数据库中也有了这样一条数据:

    image.png

    回顾一下,我们几乎没有写一行非业务代码,但是spring-data-jpa带给我们的遍历远远不止于此。

    删除操作也同样简单,比如我们要删除刚才id=1的数据,只要编写代码:

      @RequestMapping("/deleteTeacherTest")
      public void deleteTeacherTest(){
        Teacher teacher = new Teacher();
        teacher.setId(1L);
        teacherDao.delete(teacher);
      }
    

    或者更简单的

      @RequestMapping("/deleteTeacherTest")
      public void deleteTeacherTest(){
       
        teacherDao.delete(1L);
    
      }
    

    就可以了。

    修改也很简单,比如我们需要修改id=1的teacher的姓名,编写代码:

      @RequestMapping("/updateTeacherTest")
      public Teacher updateTeacherTest() {
    
        Teacher teacher = new Teacher();
        teacher.setId(1L);
        teacher.setName("jack");
    
        teacherDao.save(teacher);
    
        return teacher;
      }```
    我们刚说过它没有update方法,当指定了id,就会被当成update操作(批量?后面会有别的方法)
    
    #查
    写到这里,这章真的是太简单了,但是查有点不一样,查询条件我们需要一个“例子”,比如我要查询姓名是“jules”的老师,那我就要new一个jules,然后把他的name赋值成"name",然后再转化为spring-data-jpa需要的模板类(如果用主键作为条件,不需要“例子”,jpa提供了findOne方法)。
    我们发现teacherDao带了许多find开头的方法
    
    ![image.png](https://img.haomeiwen.com/i2650891/6908b377f49739ad.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    很多根据参数能猜出一二,这里我们需要借助Example类来按照条件查询数据,代码如下:
    

    @RequestMapping("/selectTeacherTest")
    public List selectTeacherTest() {
    Teacher teacher = new Teacher();
    teacher.setName("jules");
    List teachers = teacherDao.findAll(Example.of(teacher));

    return teachers;
    

    }

    在浏览器输入对应的url就能得到我们需要的结果:
    
    ![image.png](https://img.haomeiwen.com/i2650891/a23c859b52dbc899.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    #总结
    spring-data-jpa已经实现了很多查询方法,基本满足我们70%左右的需求,但是这并不是万能的。下一章介绍其他的查询方法。
    
    

    相关文章

      网友评论

        本文标题:愉快的使用JPA进行数据查询(四)基本使用

        本文链接:https://www.haomeiwen.com/subject/lrwgkxtx.html