Spring Data Jpa 实现in查询

abdulla1992
2021-10-29 / 0 评论 / 185 阅读 / 正在检测是否收录...
protected Specification<AitpModel> createSpecification(AitpModelCriteria criteria) {
        Specification<AitpModel> specification = new Specification<AitpModel>() {
            @Override
            public Predicate toPredicate(Root<AitpModel> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                List<Predicate> list = new ArrayList<Predicate>();
                if (null!=criteria.getModelType()){
                    String modelType = criteria.getModelType().getEquals();
                    if (!StringUtils.isEmpty(modelType)) {
                        if (modelType.contains(",")) { // in查询
                            String[] ids = modelType.split(",");
                            CriteriaBuilder.In<Object> in = criteriaBuilder.in(root.get("modelType"));
                            for (int i = 0; i < ids.length; i++) {
                                in.value(ids[i]);
                            }
                            list.add(in);
                        } else { // 普通查询
                            list.add(criteriaBuilder.equal(root.get("modelType").as(String.class), modelType));
                        }
                    }
                }
                return criteriaBuilder.and(list.toArray(new Predicate[list.size()]));
            }
        };
        if (criteria != null) {       
           if (criteria.getId() != null) {
            specification = specification.and(buildRangeSpecification(criteria.getId(), AitpModel_.id));
           }
           if (criteria.getUserId() != null) {
               specification = specification.and(buildRangeSpecification(criteria.getUserId(), AitpModel_.userId));
           }
           if (criteria.getPicCover() != null) {
               specification = specification.and(buildStringSpecification(criteria.getPicCover(), AitpModel_.picCover));
           }
           if (criteria.getModelName() != null) {
               specification = specification.and(buildStringSpecification(criteria.getModelName(), AitpModel_.modelName));
           }
//           if (criteria.getModelType() != null) {
//               specification = specification.and(buildStringSpecification(criteria.getModelType(), AitpModel_.modelType));
//           }
           if (criteria.getLanguage() != null) {
               specification = specification.and(buildStringSpecification(criteria.getLanguage(), AitpModel_.language));
           }
           if (criteria.getFramework() != null) {
               specification = specification.and(buildStringSpecification(criteria.getFramework(), AitpModel_.framework));
           }
           if (criteria.getType() != null) {
               specification = specification.and(buildStringSpecification(criteria.getType(), AitpModel_.type));
           }
           if (criteria.getScope() != null) {
               specification = specification.and(buildStringSpecification(criteria.getScope(), AitpModel_.scope));
           }
           if (criteria.getModelVersion() != null) {
               specification = specification.and(buildStringSpecification(criteria.getModelVersion(), AitpModel_.modelVersion));
           }
           if (criteria.getModelUseInstructions() != null) {
               specification = specification.and(buildStringSpecification(criteria.getModelUseInstructions(), AitpModel_.modelUseInstructions));
           }
           if (criteria.getOutputPath() != null) {
               specification = specification.and(buildStringSpecification(criteria.getOutputPath(), AitpModel_.outputPath));
           }
           if (criteria.getCreateWay() != null) {
               specification = specification.and(buildStringSpecification(criteria.getCreateWay(), AitpModel_.createWay));
           }
           if (criteria.getProjectId() != null) {
               specification = specification.and(buildRangeSpecification(criteria.getProjectId(), AitpModel_.projectId));
           }
           if (criteria.getJobId() != null) {
               specification = specification.and(buildRangeSpecification(criteria.getJobId(), AitpModel_.jobId));
           }
           if (criteria.getFilePath() != null) {
               specification = specification.and(buildStringSpecification(criteria.getFilePath(), AitpModel_.filePath));
           }
           if (criteria.getAccuracy() != null) {
               specification = specification.and(buildStringSpecification(criteria.getAccuracy(), AitpModel_.accuracy));
           }
           if (criteria.getModelFormat() != null) {
               specification = specification.and(buildStringSpecification(criteria.getModelFormat(), AitpModel_.modelFormat));
           }
           if (criteria.getModelLabelType() != null) {
               specification = specification.and(buildStringSpecification(criteria.getModelLabelType(), AitpModel_.modelLabelType));
           }
           if (criteria.getDelFlag() != null) {
               specification = specification.and(buildStringSpecification(criteria.getDelFlag(), AitpModel_.delFlag));
           }
           if (criteria.getRemark() != null) {
               specification = specification.and(buildStringSpecification(criteria.getRemark(), AitpModel_.remark));
           }
           if (criteria.getCreateBy() != null) {
               specification = specification.and(buildStringSpecification(criteria.getCreateBy(), AitpModel_.createBy));
           }
           if (criteria.getCreateTime() != null) {
               specification = specification.and(buildRangeSpecification(criteria.getCreateTime(), AitpModel_.createTime));
           }
           if (criteria.getUpdateBy() != null) {
               specification = specification.and(buildStringSpecification(criteria.getUpdateBy(), AitpModel_.updateBy));
           }
           if (criteria.getUpdateTime() != null) {
               specification = specification.and(buildRangeSpecification(criteria.getUpdateTime(), AitpModel_.updateTime));
           }
           if (criteria.getOrganizationId() != null) {
               specification = specification.and(buildRangeSpecification(criteria.getOrganizationId(), AitpModel_.organizationId));
           }
       }
       return specification;
    }
0

评论 (0)

取消