说明:
(1)为什么写本篇博客?:
● 在【Spring Boot电商项目29:商品分类模块八:后台的【分类列表(平铺)】接口;】中,实现分页功能时,使用到了PageHelper分页插件;
● 但是,在【Spring Boot电商项目29:商品分类模块八:后台的【分类列表(平铺)】接口;】中,我们使用的是PageHelper中的PageInfo对象;
● 而,在【MyBatis进阶五:PageHelper分页插件;】中,我们第一次遇到PageHelper时候,使用的是PageHelper中的Page对象;
● 所以,本篇博客,就分析一下:PageHelper分页插件中的:Page和PageInfo的区别;
(2)本篇博客参考的博客有:
● 【Page和PageInfo】,该文的作者是【程序员^晓洋】;
目录
一:Page和PageInfo;(这儿,归纳了两个对象的属性,总结的不错;)
二:Page和PageInfo:源码;(这部分,仅供参考,爱看不看)
(1)首先,就是开启分页,设置【pageNum:当前页】和【pageSize:每页记录数】;
(2)然后,我们会利用Mybatis,根据上面设置的分页条件,去查询数据库,得到查询结果;
(3)然后,可以根据前端对分页数据格式的要求,可以把(3)中查到的分页数据,包装成Page对象;
一:Page和PageInfo;(这儿,归纳了两个对象的属性,总结的不错;)
这儿的内容,完全照抄自【Page和PageInfo】,该文的作者是【程序员^晓洋】;
1. Page和PageInfo简介;
两者都能获取到数据,
Page是一个ArrayListList。
PageInfo是一个对象,能获取到的数据比Page多;
2.Page和PageInfo,具体属性分析;
Page对象:
private int pageNum; //当前页码 private int pageSize; //每页数据的数量 private int startRow; //始页首行行号 private int endRow; //尾页尾行行号 private long total; //总记录数 private int pages; //总页数 private Boolean reasonable; //分页合理化 private Boolean pageSizeZero; //当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
PageInfo对象:
private int pageNum; //当前页 private int pageSize; //每页显示数据条数 private int size; //当前页的数量 private int startRow; //始页首行行号 private int endRow; //尾页尾行行号 private long total; //总记录数 private int pages; //总页数 private List<T> list; //查询结果的数据 private int firstPage; //首页 private int prePage; //上一页 private int nextPage; // 下一页 private int lastPage; //最后一页 private boolean isFirstPage; //是不是第一页 private boolean isLastPage; //是不是最后一页 private boolean hasPreviousPage;//有没有上一页 private boolean hasNextPage; //有没有下一页 private int navigatePages; //所有导航页号 private int[] navigatepageNums; //导航页码数
二:Page和PageInfo:源码;(这部分,仅供参考,爱看不看)
1.Page源码;
/* * The MIT License (MIT) * * Copyright (c) 2014-2017 [email protected] * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.github.pagehelper; import java.io.Closeable; import java.util.ArrayList; import java.util.List; /** * Mybatis - 分页对象 * * @author liuzh/abel533/isea533 * @version 3.6.0 * 项目地址 : http://git.oschina.net/free/Mybatis_PageHelper */ public class Page<E> extends ArrayList<E> implements Closeable { private static final long serialVersionUID = 1L; /** * 页码,从1开始 */ private int pageNum; /** * 页面大小 */ private int pageSize; /** * 起始行 */ private int startRow; /** * 末行 */ private int endRow; /** * 总数 */ private long total; /** * 总页数 */ private int pages; /** * 包含count查询 */ private boolean count = true; /** * 分页合理化 */ private Boolean reasonable; /** * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果 */ priva