當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
第九篇:Spring Boot整合Spring Data JPA_入门试炼06
生活随笔
收集整理的這篇文章主要介紹了
第九篇:Spring Boot整合Spring Data JPA_入门试炼06
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
八、JpaSpecificationExecutor接口
前言:該接口主要提供了多條件查詢的支持,并且可以在查詢中添加分頁和排序。
注意:JpaSpecificationExecutor接口是獨立存在的。完全獨立。
1、持久層接口:
測試代碼
@RunWith(SpringRunner.class) @SpringBootTest public class UsersRepositorySpecificationTest {@Autowiredprivate UsersRepositorySpecification usersRepositorySpecification;/*** jpaSpecificationExecutor 接口 單條件測試*/@Testpublic void jpaSpecificationExecutor() {/*** Specification<Users> 用于封裝條件*/Specification<Users> spec = new Specification<Users>() {/*** Root<Users>:查詢對象屬性封裝* CriteriaQuery<?> query:瘋長了我們要執行的查詢中各個部分的信息,select from order* CriteriaBuilder:查詢條件的構造器,定義不同查詢條件* @param root* @param query* @param criteriaBuilder* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {/*** 參數1:查詢的屬性* 參數2:查詢的指*/Predicate pre = criteriaBuilder.equal(root.get("name"), "zhanga");return pre;}};List<Users> list = usersRepositorySpecification.findAll(spec);for (Users users : list) {System.out.println(users);}}/*** jpaSpecificationExecutor 接口 多條件測試*/@Testpublic void jpaSpecificationExecutor2() {/*** Specification<Users> 用于封裝條件*/Specification<Users> spec = new Specification<Users>() {/*** Root<Users>:查詢對象屬性封裝* CriteriaQuery<?> query:瘋長了我們要執行的查詢中各個部分的信息,select from order* CriteriaBuilder:查詢條件的構造器,定義不同查詢條件* @param root* @param query* @param criteriaBuilder* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {/*** where name='zhanga' and age = 20* 參數2:查詢的指*/List<Predicate> list = new ArrayList<>();list.add(criteriaBuilder.equal(root.get("name"), "zhanga"));list.add(criteriaBuilder.equal(root.get("age"), 22));Predicate[] arr = new Predicate[list.size()];return criteriaBuilder.and(list.toArray(arr));}};List<Users> list = usersRepositorySpecification.findAll(spec);for (Users users : list) {System.out.println(users);}}/*** jpaSpecificationExecutor 接口 多條件測試2*/@Testpublic void jpaSpecificationExecutor3() {/*** Specification<Users> 用于封裝條件*/Specification<Users> spec = new Specification<Users>() {/*** Root<Users>:查詢對象屬性封裝* CriteriaQuery<?> query:瘋長了我們要執行的查詢中各個部分的信息,select from order* CriteriaBuilder:查詢條件的構造器,定義不同查詢條件* @param root* @param query* @param cb* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder cb) {/*** where name='zhanga' and age = 20* 參數2:查詢的指*/ // List<Predicate> list = new ArrayList<>(); // list.add(criteriaBuilder.equal(root.get("name"), "zhanga")); // list.add(criteriaBuilder.equal(root.get("age"), 22)); // Predicate[] arr = new Predicate[list.size()];//只有and // return cb.and(cb.equal(root.get("name"),"zhanga"),cb.equal(root.get("age"),22));//只有or // return cb.or(cb.equal(root.get("name"),"zhanga"),cb.equal(root.get("age"),22));//and+or//name='zhanga' and age=22 or id =2 and 的優先級高于or 相當于//(name='zhanga' and age=22) or id =2return cb.or(cb.equal(root.get("name"), "zhanga"), cb.equal(root.get("age"), 22), cb.equal(root.get("id"), 2));}};//添加排序規則Sort sort = new Sort(new Sort.Order(Sort.Direction.DESC, "id"));List<Users> list = usersRepositorySpecification.findAll(spec, sort);for (Users users : list) {System.out.println(users);}} }本文源碼下載:
github地址:
https://github.com/gb-heima/Spring-Boot-Actual-Combat/tree/master/parent/spring-boot-chapter-9
總結
以上是生活随笔為你收集整理的第九篇:Spring Boot整合Spring Data JPA_入门试炼06的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件设计师 - 函数依赖 和 范式
- 下一篇: Redis 工具类_慕课版本