1.在Repository中定义相应的方法:
Page<EthicalApply> findByCreateTime(Date createTime, Pageable pageable);
Pageable pageable = PageRequest.of(page - 1,size);
2: 基于自定义的@Query
//在Repository中定义相应的JPL语句:
@Query("select e from apply e ORDER BY e.createTime ASC")
Page<ApplyEntity> findInApplys(Pageable pageable);
3: 基于Pageable中的Sort字段
Sort sort = new Sort(Direction.ASC, "createTime");
Pageable pageable = PageRequest.of(page-1, size, sort);
//在Repository无需声明任何新的方法,直接使用JpaRepository中继承而来的findAll(Pageable //pageable)方法即可。
//在Service中调用具体Repository中的方法如下
Page p = this.repo.findAll(pageable);
4: 条件分页查询
public Page<User> getUsersPage(PageParam pageParam, String nickName) {
//规格定义
Specification<User> specification = new Specification<User>() {
/**
* 构造断言
* @param root 实体对象引用
* @param query 规则查询对象
* @param cb 规则构建对象
* @return 断言
*/
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<>(); //所有的断言
if(StringUtils.isNotBlank(nickName)){ //添加断言
Predicate likeNickName = cb.like(root.get("nickName").as(String.class),nickName+"%");
predicates.add(likeNickName);
}
return cb.and(predicates.toArray(new Predicate[0]));
}
};
//分页信息 页码:前端从1开始,jpa从0开始,做个转换
Pageable pageable = new PageRequest(page()-1,size);
//查询
return this.userRepository.findAll(specification,pageable);
}