Spring Boot中JPA实现分页排序的几种方式

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);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值