SpringDataJpa持久层常用操作
前言
SpringDataJPA 是 Spring Data 技术下的子项目,使用SpringDataJPA 访问数据只需要数据访问层接口实现 JpaRepository接口即可。由于 JpaRepository接口继承了PagingAndSortingRepository接口,所以也有它的一些 功能。
前面讲了SpringDataJpa的快速入门,请查看博主的SpringDataJpa系列文章。欢迎关注!
默认继承方法
前面的案例中已经介绍了添加的方法,那如下我们需要查找一个或者多个,删除一个或者多个该如何做呢,查找单个或 者多个,我们只需要在上一个案例的基础上,在com.cyj.springboot.controller下的StudentController类下,添 加如下代码:
/** * http://localhost:8090/findOne?id=1
* @param id
* @return student */
@RequestMapping("/findOne")
public Object findStudentById(int id) {
Student student = repository.findOne(id);
return student;
}
查询单个运行效果如下:
关键字抽象方法
- 按照Spring Data 的规则,我们可以通过定义在Repository接口下的方法来执行查询等自定义操作,查询的方法必
须以find、get、read开头,同时涉及条件查询时,SpringDataJpa支持将条件属性定义在数据访问层接口下的方法
名中。其中命名约定如下:- 条件属性通过条件关键字连接。
- 条件属性的首字母必须大写
SpringDataJpa解析方法吗的原则
框架在进行方法名解析时,会先把方法名多余的前缀截取掉,比如 find、findBy、read、readBy、get、getBy,
然后对剩下部分进行解析。并且如果方法的最后一个参数是 Sort 或者 Pageable 类型,也会提取相关的信息,以便
按规则进行排序或者分页查询。如下表列举部分关键字抽象方法的含义:
- And — 等价于 SQL 中的 and 关键字,比如 findByUsernameAndPassword(String user, Striang pwd);
- Or — 等价于 SQL 中的 or 关键字,比如 findByUsernameOrAddress(String user, String addr);
- Between — 等价于 SQL 中的 between 关键字,比如 findBySalaryBetween(int max, int min);
- LessThan — 等价于 SQL 中的 “<”,比如 findBySalaryLessThan(int max);
- GreaterThan — 等价于 SQL 中的”>”,比如 findBySalaryGreaterThan(int min);
- IsNull — 等价于 SQL 中的 “is null”,比如 findByUsernameIsNull();
- IsNotNull — 等价于 SQL 中的 “is not null”,比如 findByUsernameIsNotNull();
- NotNull — 与 IsNotNull 等价;
- Like — 等价于 SQL 中的 “like”,比如 findByUsernameLike(String user);
- NotLike — 等价于 SQL 中的 “not like”,比如 findByUsernameNotLike(String user);
- OrderBy — 等价于 SQL 中的 “order by”,比如 findByUsernameOrderBySalaryAsc(String user);
- Not — 等价于 SQL 中的 “! =”,比如 findByUsernameNot(String user);
- In — 等价于 SQL 中的 “in”,比如 findByUsernameIn(Collection userList) ,方法的参数可以是 Collection
类型,也可以是数组或者不定长参数; - NotIn — 等价于 SQL 中的 “not in”,比如 findByUsernameNotIn(Collection userList) ,方法的参数可以是
Collection 类型,也可以是数组或者不定长参数;
SpringDataJpa关键字抽象方法的使用
再上一个案例基础上,查找姓名中包含“刘”的全部学生信息。
在com.cyj.springboot.repository下配置StudentRepository类中添加如下代码:
public interface StudentRepository extends JpaRepository<Student, Integer>{
//根据姓名模糊查找学生信息
public List<Student> findByStudentNameContaining(String name);
}
在StudentController类下添加如下代码:
/***
* http://localhost:8090/findStudentByName?name=刘
* @param name
* @return */
@RequestMapping("/findStudentByName")
public Object findStudentByName(String name) {
List<Student> student = repository.findByStudentNameContaining(name); return student;
}
启动测试,运行效果如下:
好了到这里也该结束了,下一篇讲解–SpringDataJpa自定义查询语句(JPQL),各位要自己多动手才能学到真正的东西。加油各位
最后
-
更多参考精彩博文请看这里:《陈永佳的博客》
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97654.html