这个是我自己根据 org.springframework.data.domain.Pageable;工具规则走的,比如page默认为0就是第一页,所以自定义的page也是0为第一页。
(因为pageable查出的list集合不方便改,涉及到很多业务无法直接查询处理,所有干脆全部查出,或者与一个大条件查出大部分,然后在自定义分页对其分页,主要好处:我可以自由的处理查出的数据。如果业务不复杂劲量使用pageable)
首先创建一个
PageUtil<T>类放入基本分页参数,参数是参照Pageable去产考的
这是PageUtil<T>类
/*****************************************代码块********************************************
@Getter @Setter public class PageUtil<T> { /** * 当前页数 */ private Integer page = 0; /** * 当前显示行数 */ private Integer size = 0; /** * 总页数 */ private Integer currentPage = 0; /** * 总行数 */ private Integer totalNumber = 0; /** * 是否为最后一页 */ private boolean last = false; /** * 判断第一页 */ private boolean first = true; private List<T> content = new ArrayList<T>(); /** * 自定义分页方法 * * @param page * @param size * @param list * @return */ public PageUtil<T> page(Integer page, Integer size, List<T> list) { PageUtil<T> storePageUtil = new PageUtil<>(); /*----------------- 分页 ---------------------*/ //判断size如果为0则返回空 if (list.size() == 0 || size == 0) return storePageUtil; //判断是否为第一页 storePageUtil.setFirst(page == 0); storePageUtil.setPage(page); //当前页数 storePageUtil.setSize(size); //当前行数 //查出总数 % 当前行数(判断是否存在余数) storePageUtil.setCurrentPage(list.size() % size == 0 ? list.size() / size : list.size() / size + 1);//总页数 storePageUtil.setTotalNumber(list.size()); //总行数 storePageUtil.setLast((size * (page + 1) >= list.size())); //是否为最后一页 //如果当前页数小于总也数则查询出来 if (page < storePageUtil.getCurrentPage()) { //判断是否为最后一页 if ((size * (page + 1) >= list.size())) { for (int i = page * size; i < list.size(); i++) { storePageUtil.getContent().add(list.get(i)); } } else { for (int i = page * size; i < page * size + size; i++) { storePageUtil.getContent().add(list.get(i)); } } } return storePageUtil; } }
*****************************************代码块********************************************/
接下来分页代码思路(有跟简单的,跟方便的代码不建议使用这种计算方式,下面代码是参考思路)
/*****************************************代码块********************************************
Integer listSize = 10;//总页数
Integer size = 3; //当前显示行数
Integer page = 0; //点钱显示页数(当前第一页)
System.out.println((size*(page+1) >= listSize));
//判断是否为最后一页
if((size*(page+1) >= listSize)){
//如果是最后一页最后一也
for (int i = page*size; i < listSize; i++) {
System.out.println(i);
}
}else {
for (int i = page*size; i < page*size+size; i++) {
System.out.println(i);
}
}
*****************************************代码块********************************************/