public Page<UserInfo> listPage(UserInfoReq req) {
//多排序字段处理方式
Order order1 = Order.asc("type");
Order order2 = Order.desc("username");
List<Order> orderList = new ArrayList<>();
orderList.add(order1);
orderList.add(order2);
PageRequest request = PageRequest.of(1, 10, Sort.by(orderList));
//单排序条件排序
//PageRequest pageRequest = PageRequest.of(1, 10, Sort.Direction.DESC, req.getNickname());
Specification<UserInfo> specification = (Specification<UserInfo>) (root, criteriaQuery, criteriaBuilder) -> {
//用来接收参数对象信息
List<Predicate> predicates = new ArrayList<>();
//参数处理
if (!StringUtils.isEmpty(req.getNickname())) {
Predicate predicate = criteriaBuilder.like(root.get("nickname").as(String.class), "%" + req.getNickname() + "%");
predicates.add(predicate);
}
if (!StringUtils.isEmpty(req.getUsername())) {
Predicate predicate = criteriaBuilder.like(root.get("username").as(String.class), "%" + req.getUsername() + "%");
predicates.add(predicate);
}
return criteriaQuery.where(criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]))).getRestriction();
};
return userInfoRepository.findAll(specification, pageRequest);
}
hibernate分页排序 多字段动态查询 springboot
最新推荐文章于 2023-04-18 11:01:19 发布