pageInfo类属性含义小结
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类属性含义小结相关推荐
- PageHelper分页插件PageInfo类属性作用
private int pageNum;//当前页码private int pageSize;//设置每页多少条数据private int size;//当前页有多少条数据private int st ...
- python 类-Python 类属性和类方法
仅用学习参考 目标类的结构 类属性和实例属性 类方法和静态方法 01. 类的结构 1.1 术语 -- 实例使用面向对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: ...
- 关于Python类属性与实例属性的讨论
标题名字有点长. 之所以想写这个文章是因为碰巧看到网上一篇关于Pyhon中类属性及实例属性区别的帖子.因为我之前也被这个问题困扰过,今天碰巧看到了这篇帖子,发现帖子的作者只是描述了现象,然后对原因的解 ...
- python中的类属性和类方法_python面向对象之类属性和类方法的使用和实例
类属性和类方法 目标 类的结构类属性和实例属性类方法和静态方法 01. 类的结构 1.1 术语 -- 实例 1. 使用面相对象开发,第 1 步 是设计 类 2. 使用 类名() 创建对象,创建对象 的 ...
- Python 实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object):def __init__(sel ...
- 多态和类属性、类方法
::: {.markdown-body} 多态 {#toc_0} 目标 {#toc_1} 多态 面向对象三大特性 封装 根据 职责 将 属性 和 方法 封装 到一个抽象的 类 中 定义类的准则 继承 ...
- Python OOP:面向对象三大特性(封装、继承、多态)、类属性和实例属性、类方法@classmethod、静态方法@staticmethod、函数和类callable、__call__
一.面向对象三大特性 二.多态 定义:多态是⼀种使⽤对象的⽅式,⼦类重写⽗类⽅法,调⽤不同⼦类对象的相同⽗类⽅法,可以产⽣不同的执⾏结果. 一个父类,可以继承给多个子类,每个不同的子类可以创建多个对象 ...
- Python OOP:继承、单继承、多继承、__mro__、子类重写父类同名属性和方法、子类调用父类同名属性和方法、多层继承、super()、私有(实例)属性和方法、获取修改私有属性值、私有类属性
一.继承 Python⾯向对象的继承指的是多个类之间的所属关系,即⼦类默认继承⽗类的所有属性和⽅法. 继承作用:继承可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. 在P ...
- Python之 类属性和类方法
类属性和类方法 目标 类的结构 类属性和实例属性 类方法和静态方法 类的结构 1.1 术语 -- 实例 使用面相对象开发,第 1 步 是设计 类 使用 类名() 创建对象,创建对象 的动作有两步: 在 ...
最新文章
- Linux20180416四周第一次课(4月11日)
- linux中probe函数中传递的参数来源(上)
- Xftp使用教程——问答方式
- pandas高效读取大文件(csv)方法之-parquet
- dbus 和 policykit 实例篇(python)
- 对比linux终端模式和图形模式,Linux知识-2. Linux初学(CnetOS Linux7)之切换命令模式和图形模式...
- macos 10.15 django2.2+apache2.4+ladon+wsgi写webseverice接口
- 【5岁小孩对唱情歌 超萌超可爱】
- 开关造成的毛刺_干冰清洗机模具清洗机干冰去毛刺机注意事项
- JavaScript并非“按值传递”
- 聊聊我对写好程序的认识
- do-while语句和while的区别
- 计算机科学导论教程,计算机科学导论教程重点(6页)-原创力文档
- 操作系统的起源与发展历程
- TeXLive2021+TeXStudio安装及配置,亲测有效!
- HCNA之路由优先级及路由冗余备份
- 新买的移动硬盘不显示盘符?西部数据SSD无痛初始化指南
- (转)如何应用MTCNN和FaceNet模型实现人脸检测及识别
- Linux 禁止查看根目录,Linux用户登录之后,不能查看根目录列表(转载+原创)
- xiandian云计算平台IAAS图文篇-controller节点