前因:因为数据库里的表数据过大,每条查询需要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自定义分页相关推荐

  1. PageHelper使用以及PageInfo中分页对象的转化

    在使用Mybatis查询数据库展示到前端的过程中不可避免的要考虑到分页问题,这时就引入了Mybatis的PageHelper插件,这个插件对分页功能进行了强有力的封装,只需要将查询出来的数据List集 ...

  2. mybatis常见分页技术和自定义分页原理实战

    文章目录 前言 mybatis简单了解 分页类型 分页方式 1.数组分页 2.数据库分页 3.Rowbounds分页 4.自定义插件分页 自定义分页原理 自定义分页实战 聊下第三方分页插件 pageH ...

  3. ASP.NET 2.0在SQL Server 2005上自定义分页

    这篇文章讲述了如何利用SQL Server 2005的新特性来简单高效的实现分页.对于那些暂时还没用到SQL Server2005的人们,请看在大规模数据中的高效分页方法.如果需要,这篇文章会补上这里 ...

  4. 自定义分页(模块化)

    自定义分页 1.目的&环境准备 目的把分页写成一个模块的方式然后在需要分页的地方直接调用模块就行了. 环境准备Django中生成一个APP并且注册,配置URL&Views 配置URL ...

  5. Django框架详细介绍---cookie、session、自定义分页

    1.cookie 在HTTP协议介绍中提到,该协议是无状态的,也就是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的 ...

  6. Web Form中的Datagrid的自定义分页

    ASP.NET带给我们很多惊喜,强大的Web Form控件自然是其中的重要部分.这其中,最受关注的当然是Datagrid.在ASP中用HTML标记语法来输出数据的方法在Datagrid数据绑定面前显得 ...

  7. 上接扩展GridView控件(10) - 自定义分页样式

    5.重写OnRowCreated以实现自定义分页样式 /// <summary>                  /// OnRowCreated                  // ...

  8. Django—自定义分页

    分页功能在每个网站都是必要的,对于分页来说,其实就是根据用户的输入计算出应该显示在页面上的数据在数据库表中的起始位置. 确定分页需求: 1. 每页显示的数据条数 2. 每页显示页号链接数 3. 上一页 ...

  9. Cookie、Session和自定义分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

最新文章

  1. java下列语句正确的是_下列Java语句中,不正确的一项是( )。
  2. struts2 过滤器和拦截器
  3. [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
  4. [leetcode] 367. Valid Perfect Square
  5. 调用 fork() 两次以避免僵死进程
  6. esriFeatureType与esriGeometryType的区别与联系
  7. java线程 对文件copy 可能删除了 报异常_java线程对文件copy可能删除了报异常
  8. html背景自动换,html页面换皮肤颜色、背景图片(更换页面背景,常驻缓存)刷新保存...
  9. LiveQing私有云端直播点播流媒体服务-功能一张图
  10. js 图片库 改进版
  11. (扩展欧几里德算法)zzuoj 10402: C.机器人
  12. python pyqt eric_python+PyQT+Eric安裝配置 | 學步園
  13. Java获取https网页内容报错SSLHandshakeException信任(忽略)所有SSL证书
  14. 转载:Oracle导入导出命令的使用
  15. redis分布式锁学习总结
  16. 蓝桥杯官网题库【简单题解析】持续更新
  17. xlwings 安装及排错: DLL load failed while importing win32api
  18. 周末阅读:北漂程序员边城的幸福生活
  19. 15微型计算机系统不包括,全国2002年10月自学考试计算机应用基础真题
  20. 我发布在Steam的两款游戏

热门文章

  1. MFC画带箭头的直线
  2. 计算机连接无线网络的步骤,台式电脑连无线网步骤
  3. 什么是annotations
  4. linux locale设置
  5. 数据库关键字(保留字)
  6. 炸鸡鸭背后的真相 —— 一位良心发现者的自白[转]--希望提起大家的注意力
  7. HMMer在Windows环境下的安装
  8. iis服务器修改端口,Bindings bindings
  9. Navigation Controllers + UITabBarController
  10. 原始LBP/Uniform LBP编程实现与直方图