dao接口除了extends JpaRepository外,还要 extends JpaSpecificationExecutor
<dependency> <groupId>com.github.wenhao</groupId> <artifactId>jpa-spec</artifactId> <version>3.2.4</version> </dependency>
public interface UserDao extends JpaRepository<User, String>, JpaSpecificationExecutor<User> {
public Page<User> page(QueryVo queryVo){
int page= paging.getPage();
int size= paging.getSize();
//写法一
Specification<User> specification = (root, criteriaQuery, criteriaBuilder) -> {
List<Predicate> predicateList = new ArrayList<>();
if(queryVo.getName!= null && !"".equals(queryVo.getName.trim())){
predicateList.add(criteriaBuilder.like(root.get("userName"), "%"+queryVo.getName+"%"));
}
predicateList.add(criteriaBuilder.equal(root.get("isDelete"), 0));
return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));
};
// 写法二
Specification<User> specification2 = new Specification<PerfCase>() {
@Override
public Predicate toPredicate(Root<PerfCase> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<>();
if (queryVo.getName != null && !"".equals(queryVo.getName.trim())) {
predicates.add(criteriaBuilder.like(root.get("perfCaseName"), "%" + queryVo.getName + "%"));
}
predicates.add(criteriaBuilder.equal(root.get("isDelete"), 0));
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
}
};
//排序
Sort.Order order = new Sort.Order(Sort.Direction.DESC, "createTime");
Sort sort = Sort.by(order);
// 构造分页参数
Pageable pageable = PageRequest.of(page-1, size, sort);
Page<User> userPage = userDao.findAll(specification, pageable);
return userPage;
}
}
标签:jpa,Specification,queryVo,案例,criteriaBuilder,new,root,getName From: https://www.cnblogs.com/wuyicode/p/17830949.html