JPA多条件组合查询(CriteriaQuery)
/**查询Demo结果集 * @return */ public List<Demo> findDemoList(ParamVO param,Pageable pageable,List<Integer> userIds){ List<Demo> result = demoRepository.findAll(new Specification<Demo>(){ @Override public Predicate toPredicate(Root<Demo> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> predicates = new ArrayList<Predicate>(); // is null predicates.add(root.get("fId").isNull()); // = if(!StringUtils.isNoneBlank(param.getPoName())){ predicates.add(cb.equal(root.get("poName"), "%"+param.getPoName()+"%")); } // like if(!StringUtils.isNoneBlank(param.getPoName())){ predicates.add(cb.like(root.get("poName"), "%"+param.getPoName()+"%")); } // between if(!StringUtils.isNoneBlank(param.getBeginDate())&&!StringUtils.isNoneBlank(param.getEndDate())){ predicates.add(cb.between(root.get("date"), param.getBeginDate(),param.getEndDate())); } //in predicates.add(root.get("userId").in(userIds)); return query.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction(); } },pageable).getContent(); return result; }