PageHelper-Mybatis分页插件-使用心得

本文介绍了Mybatis的PageHelper分页插件的使用,包括配置拦截器、业务层调用方法,以及如何实现物理分页。通过PageHelper.startPage设置分页参数,可以自动将查询语句转化为分页查询。此外,还展示了PageInfo的用法,提供了全面的分页属性以供访问。详细教程可参考官方文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.导入jar包

2.业务层调用

 1)配置分页插件

interceptor 拦截器

特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor。

com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。

dialect配置的是数据库方言,位于PageHelper.class里

pageSizeZero表示每页显示条数为零时所做的操作,位于PageHelper.class下关联的SqlUtil.class里

reasonable表示合理化分页,位于PageHelper.class下关联的SqlUtil.class里

我们一般会让他进行一个自动的合理化配置,

 

 

 

映射配置文件中只需要配置查询所有语句就可以了。

 

2)调用

 

stuma.selectAll()不在是查询所有了,因为StudentMapper对象是由Mybatis动态代理生成的,MyBatis配置文件中配置了PageHelper分页插件,生成StudentMapper的时候为我们做好了分页的业务处理,而且是物理分页。所以mapper对象调用selectAll()方法的时候,不在是原来的查询所有语句了,而是PageHelper分页插件代理的分页查询语句。

 

测试类

 

 

 

 

 

 

3.运行结果

 

count=true总的条数

pageNum=1当前页数

pageSize=3每页显示的条数

startRow=0开始下标

endRow=3结束下标

total=11总条数\总记录数

pages=4总页数

 

这是直接输出这个集合,我们来遍历一下又变了。

输出结果

 

第2页

输出结果

第3页

输出结果

第4页

输出结果

 

//获取第1页,10条内容,默认查询总数

count PageHelper.startPage(1, 10);

//紧跟着的第一个select方法会被分页

List<Country> list = countryMapper.selectIf(1);

assertEquals(2, list.get(0).getId());

//后面的不会被分页,除非再次调用PageHelper.startPage

List<Country> list2 = countryMapper.selectIf(null);

assertEquals(10, list.size());

//分页时,实际返回的结果list类型是Page<E>,如果想取出分页信息,需要强制转换为Page<E>

assertEquals(182, ((Page) list).getTotal());

 

使用PageInfo的用法:

//获取第1页,10条内容,默认查询总数count

PageHelper.startPage(1, 10);

List<Country> list = countryMapper.selectAll();

//用PageInfo对结果进行包装

PageInfo page = new PageInfo(list);

//测试PageInfo全部属性

//PageInfo包含了非常全面的分页属性

assertEquals(1, page.getPageNum());

assertEquals(10, page.getPageSize());

assertEquals(1, page.getStartRow());

assertEquals(10, page.getEndRow());

assertEquals(183, page.getTotal());

assertEquals(19, page.getPages());

assertEquals(1, page.getFirstPage());

assertEquals(8, page.getLastPage());

assertEquals(true, page.isFirstPage());

assertEquals(false, page.isLastPage());

assertEquals(false, page.isHasPreviousPage());

assertEquals(true, page.isHasNextPage());

 

 

详细使用教程百度pageHelper

https://pagehelper.github.io/docs/howtouse/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值