MyBatis分页-PageHelper
分页公式:select * from 表名 limit(curPage-1)*pageSize,pageSize;
select * from father limit 2,2;
MyBatis的拦截器
MyBatis提供了一种plugin机制,允许我们在MyBatis的原有处理流程上加入自己逻辑,所有我们就可以使用这种逻辑加上我们的分页逻辑,也就是实现拦截器。
MyBatis支持的拦截器接口有四个:
Executor:执行拦截器
ParameterHandler:参数拦截器
ResultSetHandler:结果集拦截器
StatementHandler:语句拦截器
下面是操作流程
先在maven.xml中引入pagehelper的包
然后在全局中配置插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
<property name="offsetAsPageNum" value="false"/>
<property name="rowBoundsWithCount" value="false"/>
<property name="pageSizeZero" value="true"/>
<property name="reasonable" value="false"/>
<property name="supportMethodsArguments" value="true"/>
<property name="returnPageInfo" value="none"/>
</plugin>
将上面内容拷入到mybatis.cfg.xml中
@Test
public void queryFatherByPage(){
SqlSession session = ssf.openSession();
FatherExample example=new FatherExample();
PageHelper.startPage(2,2);
List<Father> list =session.selectList("com.ryh.mapper.FatherMapper.selectByExample",example);
PageInfo<Father>pageInfo=new PageInfo(list);
//打印分页信息
System.out.println("数据一共多少行:" + pageInfo.getTotal());
System.out.println("数据一共分了多少页:" + pageInfo.getPages());
System.out.println("每页行数:" + pageInfo.getPageSize());
System.out.println("当前页码:" + pageInfo.getPageNum());
System.out.println("最后一页页号:" + pageInfo.getNavigateLastPage());
System.out.println("第一页页号:" + pageInfo.getNavigateFirstPage());
List<Father> list1 = pageInfo.getList();
list1.forEach(c-> System.out.println(c.getFname()));
session.close();
}