pageHelper针对mybatis查询返回的数据再处理时,会引起分页失效。
使用stream流skip()和limit()方法实现分页小功能。
直接上代码
/**
* Author:tianbo
* Date:2022/7/5
*/
@Data
public class PageLimit<T> {
private List<T> list;//要分页的数组
private Integer total; //总个数
private Integer currentPage; //当前页
private Integer pageSize; // 每页个数大小
private Boolean izNext;//是否有后一页
public PageLimit<T> getPageLimit(List<T> list, int currentPage, int pageSize) {
PageLimit<T> result = new PageLimit<>();
if (CollectionUtils.isNotEmpty(list)) {
List<T> collect = list.stream().skip((currentPage - 1) * pageSize).limit(pageSize).
collect(Collectors.toList());
result.setList(collect);
result.setCurrentPage(currentPage);
result.setPageSize(pageSize);
result.setTotal(list.size());
result.setIzNext(isNext(currentPage, pageSize, list.size()));
} else {
result.setIzNext(false);
result.setTotal(0);
result.setPageSize(pageSize);
result.setCurrentPage(1);
}
return result;
}
private Boolean isNext(Integer currentPage, Integer pageSize, Integer size) {
Double pages = new BigDecimal(size).divide(new BigDecimal(pageSize),BigDecimal.ROUND_CEILING).doubleValue();
Double curPage = new BigDecimal(currentPage).doubleValue();
if (curPage < pages) {
return true;
}
return false;
}
}