一、PageHelper的作用
分页的sql语句:
select * from 表名 [where 条件] limit (page-1)*pageSize, pageSize;
page: 当前页码
pageSize: 每页显示的条数。
当我们使用pagehelper时就不需要写limit分页的语句了,它就可以帮你完成分页的功能。
二、PageHelper的使用
1.导入pageHelper的jar包
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.11</version>
</dependency>
2、在mybatis.xml文件中设置拦截器
plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
properties?, settings?,
typeAliases?, typeHandlers?,
objectFactory?,objectWrapperFactory?,
plugins?,
environments?, databaseIdProvider?, mappers?
<plugins>
<!--com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3、使用PageHelper
在我们的代码测试区域里添加设置分页
PageHelper.startPage(pageNum,PageSize);
pageNum:显示第几页 PageSize:每页显示的条数
将查询到的数据封装到pageinfo类中
通过调用pageinfro中的方法可以拿到我们相要的数据
@Test
public void find_all()throws Exception{
//配置xml文件
Reader reader = Resources.getResourceAsReader("mybatis.xml");
//获取sqlsessionfactory对象
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
//获取sqlsession对象
SqlSession session=factory.openSession();
//创建代理类
UserDao userDao = session.getMapper(UserDao.class);
//分页
PageHelper.startPage(1,5);
//代理类调用方法
List<User> list = userDao.findAll();
//封装到pageinfo类中
PageInfo <User> pageInfo=new PageInfo<>(list);
//调用方法
System.out.println("查询到数据的总条数:"+pageInfo.getTotal());
System.out.println("查询到的数据按照要求可以分为多少页:"+pageInfo.getPages());
System.out.println("当前页码对应的数据"+pageInfo.getList());
}