PageHelper 简介
- PageHelper是MyBatis中非常方便的第三方分页插件
- 官方文档:
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md - 我们可以对照官方文档的说明,快速的使用插件
PageHelper的使用步骤
1.导入jar包
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
2)在MyBatis全局配置文件中配置分页插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor
">
<property name="helperDialect" value="mysql"/>
</plugin>
</plugins>
3)使用PageHelper提供的方法进行分页
@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封装返回结果
@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();
}
}