Advertisement

jpa动态分页多条件查询

阅读量:

多条件动态分页:

复制代码
     Specification<ExaminationPaperDocument> spec = new Specification<ExaminationPaperDocument>() {
                @Override
                public Predicate toPredicate(Root<ExaminationPaperDocument> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                    List<Predicate> predicates = new ArrayList<>();
                    //根据学段查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getEducationStageCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("educationStageCode"), conditionDocumentBo.getEducationStageCode()));
                    }
                    //根据年级查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getGradeCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("gradeCode"), conditionDocumentBo.getGradeCode()));
                    }
                    //根据科目查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getSubjectCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("subjectCode"), conditionDocumentBo.getSubjectCode()));
                    }
                    //根据版本查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getVersionCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("versionCode"), conditionDocumentBo.getVersionCode()));
                    }
                    //根据地址查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getAddressCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("addressCode"), conditionDocumentBo.getAddressCode()));
                    }
                    //根据年份查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getYearCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("yearCode"), conditionDocumentBo.getYearCode()));
                    }
                    //根据考试查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getExamCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("examCode"), conditionDocumentBo.getExamCode()));
                    }
                    //根据文件名查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getFileName())) {
                        predicates.add(criteriaBuilder.like(root.get("fileName"), "%" + conditionDocumentBo.getFileName() + "%"));
                    }
                    //根据文件名查询
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getTypeCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("typeCode"), conditionDocumentBo.getTypeCode()));
                    }
                    if (StringUtils.isNotEmpty(conditionDocumentBo.getTypeCode())) {
                        predicates.add(criteriaBuilder.equal(root.get("typeCode"), conditionDocumentBo.getTypeCode()));
                    }
                    if (conditionDocumentBo.getWhetherPrivate()!=null) {
                        predicates.add(criteriaBuilder.equal(root.get("whetherPrivate"), conditionDocumentBo.getWhetherPrivate()));
                    }
                    Predicate[] arr = new Predicate[predicates.size()];
                    return criteriaBuilder.and(predicates.toArray(arr));
                }
            };
            //默认分页1-5条
            if (conditionDocumentBo.getPageNum()==null||conditionDocumentBo.getPageNum() <= 0) {
                conditionDocumentBo.setPageNum(1);
            }
            if (conditionDocumentBo.getPageSize()==null||conditionDocumentBo.getPageSize() <= 0) {
                conditionDocumentBo.setPageSize(5);
            }
        List<ExaminationPaperDocument> all = examinationPaperDocumentRepository.findAll(spec);
        Pageable pageable = PageRequest.of(conditionDocumentBo.getPageNum() - 1, conditionDocumentBo.getPageSize());
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
    代码解读

conditionDocumentBo是我的条件对象,ExaminationPaperDocument是数据库实体对象

全部评论 (0)

还没有任何评论哟~