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

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

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

愉快的使用JPA进行数据查询(四)基本使用_第1张图片
image.png
愉快的使用JPA进行数据查询(四)基本使用_第2张图片
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:

愉快的使用JPA进行数据查询(四)基本使用_第3张图片
image.png

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

愉快的使用JPA进行数据查询(四)基本使用_第4张图片
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](http://upload-images.jianshu.io/upload_images/2650891-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](http://upload-images.jianshu.io/upload_images/2650891-a23c859b52dbc899.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

#总结
spring-data-jpa已经实现了很多查询方法,基本满足我们70%左右的需求,但是这并不是万能的。下一章介绍其他的查询方法。

***
欢迎关注公众号交流,定期分享源码心得
![image.png](https://upload-images.jianshu.io/upload_images/2650891-50358707ff0c5ed5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

你可能感兴趣的:(愉快的使用JPA进行数据查询(四)基本使用)