spring date Jpa 动态条件查询
构建动态sql前需要给Subscribe 实体 实现 Serializable
dao需要继承 extends JpaRepository<Subscribe, Long>, JpaSpecificationExecutor
主要代码:
public Page<Subscribe> findSubscribeByCondition(int i,String name,String phone,String date,String bwg){
PageRequest page = PageRequest.of(i,10);
Specification<Subscribe> specification = new Specification<Subscribe>() {
@Override
public Predicate toPredicate(Root<Subscribe> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
// 动态 SQL表达式
Predicate predicate = criteriaBuilder.conjunction();
// 动态 SQL表达式集合
List<Expression<Boolean>> expressions = predicate.getExpressions();
if(name != null || name != ""){
expressions.add(criteriaBuilder.like(root.get("name").as(String.class),"%"+name+"%"));
}
if(phone != null || phone != ""){
expressions.add(criteriaBuilder.equal(root.get("number").as(String.class),phone));
}
if(date != null || date != ""){
expressions.add(criteriaBuilder.equal(root.get("date").as(String.class),date));
}
if(bwg != null || bwg != ""){
expressions.add(criteriaBuilder.equal(root.get("bwg").as(String.class),bwg));
}
return predicate;
}
};
return subscribeDao.findAll(specification, page);
}