一、环境配置
1、引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
2、mybatis核心配置文件中配置插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
二、测试
InputStream is = Resources.getResourceAsStream("mybatis-config06.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = factory.openSession();
UserMapper um = sqlSession.getMapper(UserMapper.class);
//先使用PageHelper.startPage(1, 5);开启分页查询的功能
PageHelper.startPage(2, 5);
List<User> users = um.selectAll();
for (User user : users) {
System.out.println(user.toString());
}
/*
PageInfo可以获取更加详细的分页信息
需要传入查询出来的结果(users)和导航分页(navigatePages)的数量
*/
PageInfo<User> pageInfo = new PageInfo<User>(users,3);
System.out.println(pageInfo);
pageNum:当前页码、pageSize:每页展示几条数据、size:当前页真正展示了多少条数据、pages:总页数、prePage:上一页的页码、nextPage:下一页的页码、isFirstPage:是不是首页、 isLastPage:是不是尾页、navigatePages:导航分页的数量
注意:
PageHelper.startPage(2, 5);//必须写在执行查询的方法之前,从第二页开始,查询5条数据
PageInfo介绍:封装了更为详细的分页信息
/*
list:查询出来的数据,也就是上面的集合users
navigatePages:导航分页的数量(这个值不建议写偶数,因为导航分页会不对称)
*/
PageInfo<User> pageInfo = new PageInfo<User>(list,navigatePages);
导航分页(navigatePages)介绍:假设一共有20个页码,页面一次展示5个页面‘
百度的一次展示了10个页码
以当前页码为准,从减2开始,加2结束(保证页面展示5个页码)
假设当前在第3页(开始页:3-2=1,结束页3+2=5)
假设当前在第4页(开始页:4-2=2,结束页4+2=6)
注意:一共20个页码,每次展示5个页码。
如果当前在第1页或者第2页,那么页面的页码就是固定的: 1、2、3、4、5
如果当前在第19页或20页,那么页面的页码就固定在16、17、18、19、20