pageInfo类属性含义小结

pageInfo类可用于分页操作。以下为属性含义

    private static final long serialVersionUID = 1L;private int pageNum;      //当前页的页码private int pageSize;      //每页的数量private int size;            //当前页的数量可以在页面中"显示startRow到endRow 共size条数据"private int startRow; //当前页面第一个元素在数据库中的行号private int endRow;//当前页面最后一个元素在数据库中的行号private long total;     //总记录数private int pages;       //总页数private List<T> list;      //结果集private int prePage;    //上一页private int nextPage;   //下一页private boolean isFirstPage;   //是否为第一页private boolean isLastPage;   //是否为最后一页private boolean hasPreviousPage;       //是否有前一页private boolean hasNextPage;          //是否有下一页private int navigatePages;          //导航页码数private int[] navigatepageNums;       //所有导航页号private int navigateFirstPage;       //导航条上的第一页private int navigateLastPage;     //导航条上的最后一页

构造函数

 public PageInfo() {this.isFirstPage = false;this.isLastPage = false;this.hasPreviousPage = false;this.hasNextPage = false;}/** * 包装Page对象 * * @param list */  public PageInfo(List<T> list) {this(list, 8);}/** * 包装Page对象 * * @param list          page结果 * @param navigatePages 页码数量 */  public PageInfo(List<T> list, int navigatePages) {this.isFirstPage = false;this.isLastPage = false;this.hasPreviousPage = false;this.hasNextPage = false;if (list instanceof Page) {Page page = (Page)list;this.pageNum = page.getPageNum();this.pageSize = page.getPageSize();this.pages = page.getPages();this.list = page;this.size = page.size();this.total = page.getTotal();if (this.size == 0) {this.startRow = 0;this.endRow = 0;} else {//由于结果是>startRow的,所以实际的需要+1  this.startRow = page.getStartRow() + 1;//计算实际的endRow(最后一页的时候特殊)  this.endRow = this.startRow - 1 + this.size;}} else if (list instanceof Collection) {this.pageNum = 1;this.pageSize = list.size();this.pages = this.pageSize > 0 ? 1 : 0;this.list = list;this.size = list.size();this.total = (long)list.size();this.startRow = 0;this.endRow = list.size() > 0 ? list.size() - 1 : 0;}if (list instanceof Collection) {this.navigatePages = navigatePages;this.calcNavigatepageNums();       //计算导航页 this.calcPage();          //计算前后页,第一页,最后一页  this.judgePageBoudary();     //判断页面边界}}

计算导航页

 private void calcNavigatepageNums() {int i;if (this.pages <= this.navigatePages) {this.navigatepageNums = new int[this.pages];for(i = 0; i < this.pages; ++i) {this.navigatepageNums[i] = i + 1;}} else {this.navigatepageNums = new int[this.navigatePages];i = this.pageNum - this.navigatePages / 2;int endNum = this.pageNum + this.navigatePages / 2;int i;if (i < 1) {i = 1;for(i = 0; i < this.navigatePages; ++i) {this.navigatepageNums[i] = i++;}} else if (endNum > this.pages) {endNum = this.pages;for(i = this.navigatePages - 1; i >= 0; --i) {this.navigatepageNums[i] = endNum--;}} else {for(i = 0; i < this.navigatePages; ++i) {this.navigatepageNums[i] = i++;}}}}

计算前后页,第一页,最后一页

 private void calcPage() {if (this.navigatepageNums != null && this.navigatepageNums.length > 0) {this.navigateFirstPage = this.navigatepageNums[0];this.navigateLastPage = this.navigatepageNums[this.navigatepageNums.length - 1];if (this.pageNum > 1) {this.prePage = this.pageNum - 1;}if (this.pageNum < this.pages) {this.nextPage = this.pageNum + 1;}}}

判断页面边界

 private void judgePageBoudary() {this.isFirstPage = this.pageNum == 1;this.isLastPage = this.pageNum == this.pages || this.pages == 0;this.hasPreviousPage = this.pageNum > 1;this.hasNextPage = this.pageNum < this.pages;}

转载来源:https://www.e-learn.cn/content/qita/758537

pageInfo类属性含义小结相关推荐

  1. PageHelper分页插件PageInfo类属性作用

    private int pageNum;//当前页码private int pageSize;//设置每页多少条数据private int size;//当前页有多少条数据private int st ...

  2. python 类-Python 类属性和类方法

    仅用学习参考 目标类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例使用面向对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: ...

  3. 关于Python类属性与实例属性的讨论

    标题名字有点长. 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子.因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解 ...

  4. python中的类属性和类方法_python面向对象之类属性和类方法的使用和实例

    类属性和类方法 目标 类的结构类属性和实例属性类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 1. 使用面相对象开发,第 1 步 是设计 类 2. 使用 类名() 创建对象,创建对象 的 ...

  5. Python 实例属性和类属性

    由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object):def __init__(sel ...

  6. 多态和类属性、类方法

    ::: {.markdown-body} 多态 {#toc_0} 目标 {#toc_1} 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...

  7. Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__

    一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...

  8. Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性

    一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...

  9. Python之 类属性和类方法

    类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 类的结构 1.1 术语 -- 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: 在 ...

最新文章

  1. Linux20180416四周第一次课(4月11日)
  2. linux中probe函数中传递的参数来源(上)
  3. Xftp使用教程——问答方式
  4. pandas高效读取大文件(csv)方法之-parquet
  5. dbus 和 policykit 实例篇(python)
  6. 对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...
  7. macos 10.15 django2.2+apache2.4+ladon+wsgi写webseverice接口
  8. 【5岁小孩对唱情歌 超萌超可爱】
  9. 开关造成的毛刺_干冰清洗机模具清洗机干冰去毛刺机注意事项
  10. JavaScript并非“按值传递”
  11. 聊聊我对写好程序的认识
  12. do-while语句和while的区别
  13. 计算机科学导论教程,计算机科学导论教程重点(6页)-原创力文档
  14. 操作系统的起源与发展历程
  15. TeXLive2021+TeXStudio安装及配置,亲测有效!
  16. HCNA之路由优先级及路由冗余备份
  17. 新买的移动硬盘不显示盘符?西部数据SSD无痛初始化指南
  18. (转)如何应用MTCNN和FaceNet模型实现人脸检测及识别
  19. Linux 禁止查看根目录,Linux用户登录之后,不能查看根目录列表(转载+原创)
  20. xiandian云计算平台IAAS图文篇-controller节点

热门文章

  1. iOS 简单易用的跳转方式
  2. 终于等到了!阿里内部“性能怪兽”开源了,竟是Nginx+Redis
  3. Pandas读取和将数据存储到多个sheet的excel以及read_excel函数常用参数详解
  4. 从cocos看国内自研的游戏引擎
  5. 如何将下载的Nintendo Switch游戏移至microSD卡
  6. SQL Server 安全风险分析
  7. 华为云CloudClient下载软件_终于找到你
  8. CF362D Fools and Foolproof Road Solutions
  9. 在线教育平台建设方案!
  10. 腾讯地图全行业POI数据下载