spring data jpa 自定义条件查询 + 分页 + 排序
@Override
public Page<Book> queryBook(Book book, Pageable pageable) {
return bookRepository.findAll(new Specification<Book>() {
@Override
public Predicate toPredicate(Root<Book> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> predicates = new ArrayList<Predicate>();
if(!StringUtils.isEmpty(book.getName())) {
predicates.add(cb.like(root.<String>get("name"), "%" + book.getName() + "%"));
}
if(!StringUtils.isEmpty(book.getDescription())) {
predicates.add(cb.like(root.<String>get("description"), "%" + book.getDescription() + "%"));
}
if(!StringUtils.isEmpty(book.getAuthor())) {
predicates.add(cb.equal(root.<String>get("author"),book.getAuthor()));
}
query.where(cb.and(predicates.toArray(new Predicate[predicates.size()])));
query.orderBy(cb.desc(root.get("createTime").as(String.class)));
return query.getRestriction();
}
}, pageable);
}
正文到此结束
- 本文标签: Spring Boot
- 版权声明: 本站原创文章,于2021年04月15日由丙火发布,转载请注明出处