Page是一个泛型接口,代表查询的单页结果集,也有其他信息。常用以下方法
int getTotalPages() //返回总的页数
long getTotalElements() //返回总行数
List getContent() //返回查询结果集的List
Pageable接口常常用于构造翻页查询,通常也有以下方法
int getPageNumber() //获取总页数
int getPageSize() //获取一页的行数
Pageable next() //返回Pageable类型的下一页
boolean hasPrevious() //是否有上一页
PageRequest是Pageable的实现类。用于构造分页查询需要的页码(从0开始)、每页行数、排序等,有如下构造方法
public static PageRequest(int page,int siez)
public static PageRequest(int page,int size,Sort sort)
PageImpl是Page的实现类,可以由List和其他参数构造一个PageImpl对象
PageImpl(List content,Pageable pageable,long toal)//结果集的List,pageable,总行数total
Sort是一个用于排序的类型,默认升序排序,通常有以下用法
Sort sort = new Sort(Direction.DESC,“id”);
UserServiceImpl 中的list方法实现
public List<Menu> list(Map<String, Object> map, Integer page, Integer pageSize) {
Pageable pageable =PageRequest.of(page,pageSize,Sort.Direction.DESC,"orderNo");
Page<Menu> pages = menuDao.findAll(new Specification<Menu>() {
@Override
public Predicate toPredicate(Root<Menu> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
Predicate predicate = criteriaBuilder.conjunction();
//加入 等于divId 父节点
if(map.get("pId")!=null){
predicate.getExpressions().add(criteriaBuilder.equal(root.get("pId"),map.get("pId")));
}
return predicate;
}
},pageable);
return pages.getContent();
}
拿到这个pid 下的子节点数量
public Long getTotal(Map<String, Object> map) {
Long count=menuDao.count(new Specification<Menu>() {
@Override
public Predicate toPredicate(Root<Menu> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
Predicate predicate=cb.conjunction();
// 加入 等于 divId 父节点
if (map.get("pId") != null) {
predicate.getExpressions().add(cb.equal(root.get("pId"), map.get("pId")));
}
return predicate;
}
});
return count;
}
MenuServiceImpl 中的list方法实现
public List<User> list(Map<String, Object> map, Integer page, Integer pageSize) {
Pageable pageable = PageRequest.of(page,pageSize, Sort.Direction.DESC,"orderNo");
Page<User> list =userDao.findAll(pageable);
List<User> users =list.getContent();
return users; //拿到list集合
}