前因:因为数据库里的表数据过大,每条查询需要2秒以上,如果用mybatis内置的分页,就相当于要查两次数据库(原理先count 再查故两次) 所以就自己实现分页,不用mybatis的分页 package com.xxx.utils; import com.github.pagehelper.PageInfo; import java.util.List; import java.util.Map; public class PageUtil { //手动分页 自定义方法 public static PageInfo pageInfo(Integer page, Integer pageSize1, List list){ // 手动封装PageInfo参数进行分页 PageInfo realPageInfo = new PageInfo<Map<String,Object>>(list); int start = 0; int end = 0; int totalPages = 0; int totalRecord = 0; int pageSize = 0; int size = 0; int number = 0; size = pageSize1; number = page; pageSize = pageSize1; totalRecord = list.size(); //设置总数 realPageInfo.setTotal(totalRecord); //设置每页的显示条数 realPageInfo.setPageSize(size); //设置要显示的是第几页的数据 realPageInfo.setPageNum(number); realPageInfo.setSize(totalRecord); //计算获取对应的要显示的数据 if(totalRecord%pageSize==0){ totalPages = totalRecord / pageSize; }else { totalPages = totalRecord / pageSize + 1; } realPageInfo.setPages(totalPages); //初始边界值计算 if (number == 1){ start = 0; realPageInfo.setHasPreviousPage(false); realPageInfo.setPrePage(0); realPageInfo.setIsFirstPage(true); }else { start = realPageInfo.getPageSize()*(realPageInfo.getPageNum()-1); realPageInfo.setHasPreviousPage(true); realPageInfo.setPrePage(number-1); realPageInfo.setIsFirstPage(false); } realPageInfo.setStartRow((number-1)*pageSize); //结束边界值计算 if ((start+realPageInfo.getPageSize() > realPageInfo.getTotal())){ end = totalRecord; realPageInfo.setHasNextPage(false); realPageInfo.setIsLastPage(true); realPageInfo.setEndRow(totalRecord); }else { end = start + realPageInfo.getPageSize(); realPageInfo.setHasNextPage(true); realPageInfo.setNextPage(number + 1); realPageInfo.setIsLastPage(false); realPageInfo.setEndRow((number)*pageSize); } if (start < end && end <= totalRecord){ realPageInfo.setList(list.subList(start,end)); } if(realPageInfo.getSize() == 0) { realPageInfo.setStartRow(0); realPageInfo.setEndRow(0); } else { realPageInfo.setStartRow(realPageInfo.getStartRow() + 1); realPageInfo.setEndRow(realPageInfo.getStartRow()-1+realPageInfo.getSize()); } realPageInfo.setPages(totalPages); realPageInfo.setNavigateLastPage(totalPages>number?number+1:totalPages); return realPageInfo; } }
pagehelper里的PageInfo自定义分页
最新推荐文章于 2024-08-28 11:27:17 发布