一、单表:分页 + 排序 + 动态查询
- repository继承JpaSpecificationExecutor<T>接口;
- 最终调用Page<T> findAll(@Nullable Specification<T> spec, Pageable pageable)实现分页功能
- 构造Specification<T> spec;
- 搜索Specification能得到很多相关网页
interface Specification<T> { Predicate toPredicate(Root<T> root, CriteriaQuery query, CriteriaBuilder cb); }
- 搜索Specification能得到很多相关网页
- 构造Pageable pageable,
- Pageable是可以带Sort的
Pageable sortedByName = PageRequest.of(0, 3, Sort.by("name")); Pageable sortedByPriceDesc = PageRequest.of(0, 3, Sort.by("price").descending()); Pageable sortedByPriceDescNameAsc = PageRequest.of(0, 5, Sort.by("price").descending().and(Sort.by("name")));
- Pageable是可以带Sort的
- 等待补充
二、多表:分页 + 排序 + 动态查询
- 选择主表
- 一般选择带“排序字段”的表作为主表
- 辅表操作进行动态查询
- 当做单表动态查询进行处理,获取逻辑外键的Set集合;
- 主表操作