jpa動態組合條件分頁排序查詢

話不多說直接上代碼,基本看下代碼就懂了

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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章