話不多說直接上代碼,基本看下代碼就懂了
1.創建要排序的規則,如果不需要排序就去掉即可
2.通過criteriaBuilder執行組裝好的sql語句
Sort.Direction sort = Sort.Direction.DESC;
Pageable pageable = PageRequest.of(query.getPage() - 1, query.getPageSize(),sort,"id");
Page<TalentLibrary> page = talentLibraryRepository.findAll((Root<TalentLibrary> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) -> {
List<Predicate> predicates = new ArrayList<>();
if (StringUtils.isNotEmpty(query.getUserName())) {
predicates.add(criteriaBuilder.like(root.get("userName"),"%" + query.getUserName()+ "%"));
}
if (StringUtils.isNotEmpty(query.getInterviewPost())) {
predicates.add(criteriaBuilder.equal(root.get("interviewPost"), query.getInterviewPost()));
}
if (StringUtils.isNotEmpty(query.getState())) {
predicates.add(criteriaBuilder.equal(root.get("state"), query.getState()));
}
if (StringUtils.isNotEmpty(query.getKeywords())) {
predicates.add(criteriaBuilder.like(root.get("keywords"), "%" + query.getKeywords() + "%"));
}
return criteriaQuery.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
}, pageable);