JPA动态分页查询

本次项目开发用到了JPA,之前只是使用过mybatis,所以针对JPA的动态分页查询这块不是很了解,在这里记录一下。

public BasePage<HistoryVehiclePassDO> getDetails(Condition content ) {
        if (ObjectUtils.isNotEmpty(content )) {
       
            BasePage<HistoryVehiclePassDO> basePage = new BasePage<>();
            basePage.setTotal(0L);
            Pageable pageable = PageRequest.of(content.getPageNo() - 1, BusinessConstant.PAGE_SIZE);
            Page page = historyVehiclePassRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
                List<Predicate> predicateList = new ArrayList<>();
                if (content.getLibCode() != null) {
                    predicateList.add(criteriaBuilder.equal(root.get("libCode"), content.getLibCode()));
                }
                if (content.getCrossName() != null) {
                    predicateList.add(criteriaBuilder.equal(root.get("crossName"), content.getCrossName()));
                }
                if (content.getWeekDay() != null) {
                    predicateList.add(criteriaBuilder.equal(root.get("weekDay"), content.getWeekDay()));
                }
                if (content.getTimeSlot() != null) {
                    predicateList.add(criteriaBuilder.equal(root.get("timeSlot"), content.getTimeSlot()));
                }
                if (content.getModelPeriod() != null) {
                    Date start = getTargetDay(content.getModelPeriod());
                    Date end = new Date();
                    predicateList.add(criteriaBuilder.between(root.get("timeDate"), start, end));
                }
                if (content.getLibCode() != null) {
                    predicateList.add(criteriaBuilder.equal(root.get("libCode"), content.getLibCode()));
                }

                if (content.getVehicleNo()!=null) {
                    predicateList.add(criteriaBuilder.and(criteriaBuilder.like(root.get("vehicleNo"), "%" + content.getVehicleNo() + "%")));
                }
                return criteriaBuilder.and(
                        predicateList.toArray(new Predicate[predicateList.size()]));
            }, pageable);

            if (null != page && page.getSize() > 0) {
                List<HistoryVehiclePassDO> historyVehiclePassVOList = page.getContent();

                basePage.setList(historyVehiclePassVOList);
                basePage.setTotal(page.getTotalElements());
            }
            return basePage;
        }
        return null;
    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值