JPA动态分页查询

柔情只为你懂 2021-09-03 05:16 628阅读 0赞

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

  1. public BasePage<HistoryVehiclePassDO> getDetails(Condition content ) {
  2. if (ObjectUtils.isNotEmpty(content )) {
  3. BasePage<HistoryVehiclePassDO> basePage = new BasePage<>();
  4. basePage.setTotal(0L);
  5. Pageable pageable = PageRequest.of(content.getPageNo() - 1, BusinessConstant.PAGE_SIZE);
  6. Page page = historyVehiclePassRepository.findAll((root, criteriaQuery, criteriaBuilder) -> {
  7. List<Predicate> predicateList = new ArrayList<>();
  8. if (content.getLibCode() != null) {
  9. predicateList.add(criteriaBuilder.equal(root.get("libCode"), content.getLibCode()));
  10. }
  11. if (content.getCrossName() != null) {
  12. predicateList.add(criteriaBuilder.equal(root.get("crossName"), content.getCrossName()));
  13. }
  14. if (content.getWeekDay() != null) {
  15. predicateList.add(criteriaBuilder.equal(root.get("weekDay"), content.getWeekDay()));
  16. }
  17. if (content.getTimeSlot() != null) {
  18. predicateList.add(criteriaBuilder.equal(root.get("timeSlot"), content.getTimeSlot()));
  19. }
  20. if (content.getModelPeriod() != null) {
  21. Date start = getTargetDay(content.getModelPeriod());
  22. Date end = new Date();
  23. predicateList.add(criteriaBuilder.between(root.get("timeDate"), start, end));
  24. }
  25. if (content.getLibCode() != null) {
  26. predicateList.add(criteriaBuilder.equal(root.get("libCode"), content.getLibCode()));
  27. }
  28. if (content.getVehicleNo()!=null) {
  29. predicateList.add(criteriaBuilder.and(criteriaBuilder.like(root.get("vehicleNo"), "%" + content.getVehicleNo() + "%")));
  30. }
  31. return criteriaBuilder.and(
  32. predicateList.toArray(new Predicate[predicateList.size()]));
  33. }, pageable);
  34. if (null != page && page.getSize() > 0) {
  35. List<HistoryVehiclePassDO> historyVehiclePassVOList = page.getContent();
  36. basePage.setList(historyVehiclePassVOList);
  37. basePage.setTotal(page.getTotalElements());
  38. }
  39. return basePage;
  40. }
  41. return null;
  42. }

发表评论

表情:
评论列表 (有 0 条评论,628人围观)

还没有评论,来说两句吧...

相关阅读

    相关 jpa关联查询+

    最近在使用jpa单表操作的时候是非常的方便,但是设计到一些多表查询的时候就比较蛋疼了。 我的需求是项目中设计到一个分页以及关联查询以及多条件查询。 @Query(v