1.PageHelper 分页插件简介
PageHelper是MyBatis中非常方便的第三方分页插件
官方文档:
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
- 我们可以对照官方文档的说明,快速的使用插件
2.PageHelper的使用步骤
- 导入以下jar包
pagehelper-5.0.0.jar
jsqlparser-0.9.5.jar
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency>
|
- 在MyBatis全局配置文件中配置分页插件
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins>
|
使用PageHelper提供的方法进行分页
可以使用更强大的PageInfo封装返回结果
3 .Page对象的使用
- 在查询之前通过PageHelper.startPage(页码,条数)设置分页信息,该方法返回Page对象
@Test public void testPageHelper() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); try { EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class); Page<Object> page = PageHelper.startPage(1, 3); List<Employee> employees = mapper.getEmployees(); System.out.println("当前页是:"+page.getPageNum()); System.out.println("每页显示的条数是:"+page.getPageSize()); System.out.println("总页数是:"+page.getPages()); System.out.println("总记录数是:"+page.getTotal()); System.out.println("当前页中的记录有:"); for (Employee employee : employees) { System.out.println(employee); } } finally { sqlSession.close(); } }
|
4 .PageInfo对象的使用
- 在查询完数据后,使用PageInfo对象封装查询结果,可以获取更详细的分页信息以及可以完成分页逻辑
@Test public void testPageHelper() throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = sqlSessionFactory.openSession(); try { EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class); Page<Object> page = PageHelper.startPage(4, 2); List<Employee> employees = mapper.getEmployees(); PageInfo<Employee> pageInfo = new PageInfo<>(employees, 5); System.out.println("当前页是:"+pageInfo.getPageNum()); System.out.println("每页显示的条数是:"+pageInfo.getPageSize()); System.out.println("总页数是:"+pageInfo.getPages()); System.out.println("总记录数是:"+pageInfo.getTotal()); System.out.println("是否有上一页:"+pageInfo.isHasPreviousPage()); System.out.println("上一页是:"+pageInfo.getPrePage()); System.out.println("是否有下一页:"+pageInfo.isHasNextPage()); System.out.println("下一页是:"+pageInfo.getNextPage()); System.out.println("是否是第一页:"+pageInfo.isIsFirstPage()); System.out.println("是否是最后一页:"+pageInfo.isIsLastPage()); System.out.println("导航页的第一个页码是:"+pageInfo.getNavigateFirstPage()); System.out.println("导航页的最后一个页码是:"+pageInfo.getNavigateLastPage()); System.out.println("导航页的总页码是:"+pageInfo.getNavigatePages()); System.out.println("当前页中的记录有:"); for (Employee employee : employees) { System.out.println(employee); } System.out.println("页码信息:"); int[] navigatepageNums = pageInfo.getNavigatepageNums(); for (int navigatepageNum : navigatepageNums) { System.out.print(navigatepageNum+" "); } } finally { sqlSession.close(); } }
|