简介
该方法只是将List集合的数据进行拆分,按传入的page参数进行分页。相当于先查询所有数据,再对所有数据进行分页,所以在性能方面不太友好,如果表的数据特别多的话还是建议用Mybatis Plus的分页插件。
代码实现
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* @Description: 分页工具
* @Author: fzl
* @Date: 2022/12/2
* @Version: V1.0
*/
@Component
public class PageUtil {
/**
* 分页函数
*
* @param list 要进行分页的数据列表
* @return 当前页要展示的数据
*/
public Page<?> getPages(Page<?> page, List<?> list) {
int pageSize = (int) page.getSize();
int currentPage = (int) page.getCurrent();
int size = list.size();
if (pageSize > size) {
pageSize = size;
}
//求出最大页数,防止currentPage越界
int maxPage = size % pageSize == 0 ? size / pageSize : size / pageSize + 1;
if (currentPage > maxPage) {
currentPage = maxPage;
}
//当前页第一条数据的下标
int curIdx = currentPage > 1 ? (currentPage - 1) * pageSize : 0;
List pageList = new ArrayList<>();
//将当前页的数据放进pageList
for (int i = 0; i < pageSize && curIdx + i < size; i++) {
pageList.add(list.get(curIdx + i));
}
page.setCurrent(currentPage).setSize(pageSize).setTotal(list.size()).setRecords(pageList);
return page;
}
}