有时候难免会遇见业务场景中不适用于sql进行分页,那么就只能采用代码分页,这是我的一个分页方法
/**
* PageInfo 的分页封装
*
* @param currentPage 当前页
* @param pageSize 每页大小
* @param list 所有list类型数据
* @return PageInfo<FormData>
*/
private PageInfo<FormData> getFormDataPageInfo(Integer currentPage, Integer pageSize, List<FormData> list) {
PageInfo<FormData> objectPageInfo = new PageInfo<>();
// 总条数
int size = list.size();
objectPageInfo.setTotal(size);
if (currentPage > 0 && pageSize > 0) {
// 总页数
objectPageInfo.setPages(size == 0 ? 0 : size % pageSize == 0 ? size / pageSize : size / pageSize + 1);
// 截取的范围
int index = (currentPage - 1) * pageSize;
list = list.subList(index, (size - index > pageSize ? index + pageSize : size));
// 当前页
objectPageInfo.setPageNum(currentPage);
// 每页数量
objectPageInfo.setPageSize(pageSize);
}
// 当前页显示的数据
objectPageInfo.setList(list);
return objectPageInfo;
}