PageHelper
文章目录
- PageHelper
- 引入依赖
- 配置
- 使用
- 方法解读
- PageHelper.startPage
- Page
- PageInfo
引入依赖
<!-- spring-boot mybatis pagehelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.1</version>
</dependency>
引入最新的就可以,引入旧版会出现循环依赖问题
以下方法不推荐:
<!-- pageHelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version>
</dependency>
引入这个需要自己去手动注入
@BeanPageHelper pageHelper(){//分页插件PageHelper pageHelper = new PageHelper();Properties properties = new Properties();properties.setProperty("reasonable", "true");properties.setProperty("supportMethodsArguments", "true");properties.setProperty("returnPageInfo", "check");properties.setProperty("params", "count=countSql");pageHelper.setProperties(properties);//添加插件new SqlSessionFactoryBean().setPlugins(new Interceptor[]{pageHelper});return pageHelper;}
配置
pagehelper:helper-dialect: mysqlreasonable: truesupport-methods-arguments: true
使用
在查询操作之前调用 startPage 设置分页信息,设置页码和每页的条数
注意startPage只会对下一次SQL查询有效,如果调用两次SQL查询,则需要调用两次startPage
public Object getUsers(int pageNum, int pageSize) {Page<User> page = PageHelper.startPage(pageNum, pageSize);// 不带分页的查询List<UserEntity> list = userMapper.selectAllWithPage();// 将查询结果会自动设置到 Page 对象中System.out.println("listCnt:" + listWithPage.getTotal());// 2. 也可使用 PageInfo 来接收PageInfo<UserEntity> pageinfo = new PageInfo(list);return list;
}
方法解读
PageHelper.startPage
PageHelper.startPage(pageNum, pageSize, count, reasonable, pageSizeZero, reasonablePageSizes)
方法完整的签名如下:
javaCopy code
public static <E> Page<E> startPage(int pageNum, int pageSize, boolean count, Boolean reasonable, Boolean pageSizeZero, Boolean reasonablePageSizes);
其中,参数的含义如下:
pageNum
:表示当前页码,即要查询的页数。pageSize
:表示每页显示的记录数。count
:表示是否进行总记录数的统计。如果设置为true
,PageHelper 会自动在执行分页查询前执行一次 count 查询,获取总记录数;如果设置为false
,则不会执行 count 查询。reasonable
:表示是否开启合理化设置。如果设置为true
,PageHelper 会自动根据当前页码和每页大小来调整分页参数,以保证查询结果不为空且不超出数据范围;如果设置为false
,则不开启合理化设置。pageSizeZero
:表示是否当pageSize
参数为 0 时返回全部结果。如果设置为true
,当pageSize
参数为 0 时,PageHelper 会执行特殊处理,返回全部结果;如果设置为false
,则按照正常逻辑处理,返回空结果。reasonablePageSizes
:表示是否在合理化设置中使用合理的每页大小。如果设置为true
,PageHelper 会根据当前页码和每页大小来调整分页参数,以确保每页大小合理;如果设置为false
,则只会根据当前页码来调整分页参数,不考虑每页大小是否合理。
Page
Page
类中的参数主要用于存储分页的相关信息,以及封装分页查询的结果。下面是 Page
类中常用的参数及其含义:
- total:总记录数,表示查询结果的总条目数。
- pages:总页数,表示查询结果分成的总页数。
- pageNum:当前页码,表示当前页是第几页。
- pageSize:每页大小,表示每页显示的记录数。
- result:当前页的数据列表,存储查询结果的实际数据。
- orderBy:排序字段,表示按照哪个字段进行排序。
- count:是否进行总记录数的统计,通常在进行分页查询时,会自动统计总记录数。
- startRow:当前页的起始行号,表示当前页的第一条记录在整个查询结果中的位置。
- endRow:当前页的结束行号,表示当前页的最后一条记录在整个查询结果中的位置。
- size:当前页的记录数,表示当前页实际的记录数,通常与 pageSize 相同。
- orderByOnly:是否仅对 orderBy 进行排序,通常在进行复杂的分页查询时,可能会用到。
- countSignal:是否强制开启 count 查询,表示是否强制进行总记录数的统计。
这些参数可以帮助您更方便地获取分页查询的相关信息,以及处理分页查询的结果。在使用 PageHelper 进行分页查询时,您可以根据需要选择合适的参数来获取和处理分页信息。
PageInfo
PageInfo
类是 PageHelper 提供的用于封装分页查询结果和分页信息的类。下面是 PageInfo
类的构造方法和常用参数:
构造方法:
javaCopy codepublic PageInfo(List<T> list, int navigatePages);
public PageInfo(List<T> list, int navigatePages, int pageNum);
public PageInfo(List<T> list, int navigatePages, int pageNum, long total);
list
:表示分页查询的结果列表。navigatePages
:表示导航页码数量,即在分页导航栏中显示的页码数量。pageNum
:表示当前页码。total
:表示总记录数。
常用参数和方法:
total
:表示总记录数。pages
:表示总页数。pageNum
:表示当前页码。pageSize
:表示每页大小。size
:表示当前页的记录数。navigatePages
:表示导航页码数量。navigatepageNums
:表示导航页码数组,即分页导航栏中显示的页码列表。list
:表示分页查询的结果列表。hasPreviousPage()
:判断是否有上一页。hasNextPage()
:判断是否有下一页。isFirstPage()
:判断是否为第一页。isLastPage()
:判断是否为最后一页。
这些参数和方法可以帮助您更方便地获取分页查询的相关信息,并进行分页导航和结果展示。您可以根据需要选择合适的构造方法和使用方法,以满足不同场景下的分页需求。