使用JPA实现列表分页查询功能

1.dao层写法
@Repository
public interface ShareGroupManageRepository extends JpaRepository, JpaSpecificationExecutor {

Page findAll(Specification specification, Pageable pageable);

}

2.controller层写法
@GetMapping(value="/findList")
public HttpResult findShareGroupList(@RequestParam (value=“groupName”,required=false) String groupName,
@RequestParam(value=“pageNum”,required=false,defaultValue=“1”) int pageNum,
@RequestParam(value=“pageSize”,required=false,defaultValue=“10”)int pageSize) {

    Page shareGroupPageList = null;

    // 构造自定义查询条件
    Specification queryCondition = new Specification() {
        @Override
        public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) {
            List predicateList = new ArrayList<>();
            if (!StringUtils.isBlank(groupName)) {
                predicateList.add(cb.like(root.get("groupName"), "%" + groupName + "%"));
            }
            return cb.and(predicateList.toArray(new Predicate[predicateList.size()]));
        }
    };

    //分页查询并按创建时间降序排列
    shareGroupPageList = shareGroupRepository.findAll(queryCondition, PageRequest.of(pageNum - 1, pageSize, Sort.by(Sort.Direction.DESC, "createTime")));
    /*shareGroupPageList = shareGroupRepository.findAll(queryCondition, PageRequest.of(pageNum, pageSize, Sort.by(Sort.Direction.DESC, "createTime")));*/
    return HttpResult.ok(shareGroupPageList);
}

你可能感兴趣的:(技术分享,jpa,spring,boot)