日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

第九篇:Spring Boot整合Spring Data JPA_入门试炼06

發(fā)布時間:2024/9/27 javascript 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第九篇:Spring Boot整合Spring Data JPA_入门试炼06 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

八、JpaSpecificationExecutor接口
前言:該接口主要提供了多條件查詢的支持,并且可以在查詢中添加分頁和排序。
注意:JpaSpecificationExecutor接口是獨(dú)立存在的。完全獨(dú)立。

1、持久層接口:

public interface UsersRepositorySpecification extends JpaRepository<Users,Integer>, JpaSpecificationExecutor<Users> { }

測試代碼

@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:瘋長了我們要執(zhí)行的查詢中各個部分的信息,select from order* CriteriaBuilder:查詢條件的構(gòu)造器,定義不同查詢條件* @param root* @param query* @param criteriaBuilder* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {/*** 參數(shù)1:查詢的屬性* 參數(shù)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:瘋長了我們要執(zhí)行的查詢中各個部分的信息,select from order* CriteriaBuilder:查詢條件的構(gòu)造器,定義不同查詢條件* @param root* @param query* @param criteriaBuilder* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {/*** where name='zhanga' and age = 20* 參數(shù)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:瘋長了我們要執(zhí)行的查詢中各個部分的信息,select from order* CriteriaBuilder:查詢條件的構(gòu)造器,定義不同查詢條件* @param root* @param query* @param cb* @return*/@Overridepublic Predicate toPredicate(Root<Users> root, CriteriaQuery<?> query, CriteriaBuilder cb) {/*** where name='zhanga' and age = 20* 參數(shù)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 的優(yōu)先級高于or 相當(dāng)于//(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));}};//添加排序規(guī)則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

總結(jié)

以上是生活随笔為你收集整理的第九篇:Spring Boot整合Spring Data JPA_入门试炼06的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。