生活随笔
收集整理的這篇文章主要介紹了
【JPA操作】CriteriaQuery多条件查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
條件查詢
criteria.where() 里面的條件可以是條件數組 如下所示
public Optional< SysOrgQrcodeConfig> findByQrTitle(String title
, String orgPid
) {CriteriaBuilder builder
= entityManager
.getCriteriaBuilder();CriteriaQuery<SysOrgQrcodeConfig> criteria
= builder
.createQuery(SysOrgQrcodeConfig.class);Root<SysOrgQrcodeConfig> root
= criteria
.from(SysOrgQrcodeConfig.class);criteria
.select(root
);criteria
.where(builder
.equal(root
.get("title"), title
), builder
.equal(root
.get("orgPid"), orgPid
));return entityManager
.unwrap(Session.class).createQuery(criteria
).uniqueResultOptional();}
存在多條件查詢
條件集合存儲
@Transactional(readOnly
= true)@SuppressWarnings("unchecked")public Page<GroupDetails> findAllByPage(String uid
, String title
, LocalDateTime startTime
, LocalDateTime endTime
, Pageable pageable
) {return repository
.findAll((root
, query
, criteriaBuilder
) -> {List<Predicate> predicateList
= new ArrayList<>();predicateList
.add(criteriaBuilder
.equal(root
.get("userPid"), uid
));if (startTime
!= null || endTime
!= null) {predicateList
.add(criteriaBuilder
.between(root
.get("createTime"), startTime
, endTime
));}if (title
!= null && !title
.isEmpty()) {predicateList
.add(criteriaBuilder
.like(root
.get("groupName"), "%" + title
+ "%"));}if (predicateList
.size() > 0) {Predicate[] predicates
= new Predicate[predicateList
.size()];for (int i
= 0; i
< predicates
.length
; i
++) {predicates
[i
] = predicateList
.get(i
);}query
.where(predicates
);}query
.orderBy(criteriaBuilder
.desc(root
.get("createTime")));return query
.getRestriction();}, pageable
);}
總結
以上是生活随笔為你收集整理的【JPA操作】CriteriaQuery多条件查询的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。