spring data jpa 多條件查詢 + 分頁 + 排序


首先自定義Jpa接口類型需要繼承接口JpaSpecificationExecutor<T>

下面是實現多條件查詢 + 分頁 + 排序的代碼

導入的的相關類

import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.jpa.domain.Specification;

 

public Page<RuleLogInfoDTO> findPageByParam(final QueryRuleLogParam param) {
     //分頁加排序 Pageable page = PageRequest.of(param.getPageIndex() - 1 , param.getPageSize(),Sort.by(Sort.Order.desc("dateCreate"))); //動態條件 Specification<OperateLogDO> specification = (Specification<OperateLogDO>) (root, query, criteriaBuilder) -> { List<Predicate> list = new ArrayList<>(); if (ObjectUtil.isNotNull(param.getRuleId())){
        // 等於查詢 list.add(criteriaBuilder.equal(root.get("resourceId"),param.getRuleId())); } if (ObjectUtil.isNotEmpty(param.getRuleName())){
          // like查詢 list.add(criteriaBuilder.like(root.get("logInfo"),"%" + param.getRuleName()+ "%")); } if (CollectionUtils.isNotEmpty(list)){ Predicate[] p = new Predicate[list.size()]; return criteriaBuilder.and(list.toArray(p)); } return null; };
     org.springframework.data.domain.Page<OperateLogDO> pageLogInfo = repository.findAll(specification,page);
        return pageLogInfo;
}

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM