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/