JpaSpecificationExecutor

mac2025-02-11  23

条件分页查询

@Transactional(readOnly = true) @SuppressWarnings("unchecked") public Page<GroupDetails> findAllByPage(String uid, String title, LocalDateTime startTime, LocalDateTime endTime, Pageable pageable) { return repository.findAll((root, query, criteriaBuilder) -> { List<Predicate> predicateList = new ArrayList<>(); predicateList.add(criteriaBuilder.equal(root.get("userPid"), uid)); if (startTime != null || endTime != null) { predicateList.add(criteriaBuilder.between(root.get("createTime"), startTime, endTime)); } if (title != null && !title.isEmpty()) { predicateList.add(criteriaBuilder.like(root.get("groupName"), "%" + title + "%")); } if (predicateList.size() > 0) { Predicate[] predicates = new Predicate[predicateList.size()]; for (int i = 0; i < predicates.length; i++) { predicates[i] = predicateList.get(i); } query.where(predicates); } query.orderBy(criteriaBuilder.desc(root.get("createTime"))); return query.getRestriction(); }, pageable); }

最新回复(0)