Mybatis pageHandler分页
如果每次查询的数据量过大,我们可以使用分页:
一、引入分页的依赖
<!-- mybatis的分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
二、引入插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
<plugin interceptor="com.github.pagehelper.QueryInterceptor"/>
</plugins>
....
<environments>
</environments>
@Test
public void testPageList() throws IOException {
SqlSessionFactory sqlSessionFactory = MybatisUtil.getSqlSession("mybatis-config.xml");
//创建一个SqlSession实例
SqlSession sqlSession = sqlSessionFactory.openSession(true);
CacheMapper mapper1 = sqlSession.getMapper(CacheMapper.class);
//实现分页,1代表第几页,5代表显示几条记录
PageHelper.startPage(1,2);
List<Employee> allEmps = mapper1.getAllEmps();
//pageInfo,T的类型必须与上面list的类型保持一致,整个pageInfo中包含了所有的分页信息,可以返回给前端进行调用
/**
* PageInfo{pageNum=1, pageSize=2, size=2, startRow=1, endRow=2, total=11, pages=6,
* list=Page{count=true, pageNum=1, pageSize=2, startRow=0, endRow=2, total=11, pages=6, reasonable=false, pageSizeZero=false}
* [Employee{empId=1004, name='迈克尔', gender=2, age=18, dept=Department{dId=1089, dName='开发部', employeeList=null}},
* Employee{empId=1017, name='BITEMAN', gender=38, age=1, dept=Department{dId=1089, dName='开发部', employeeList=null}}],
* prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=8,
* navigateFirstPage=1, navigateLastPage=6, navigatepageNums=[1, 2, 3, 4, 5, 6]}
*/
PageInfo<Employee> pageInfo = new PageInfo<Employee>(allEmps,4);
System.out.println(pageInfo.getPages()); //获取分页总数
for (Employee allEmp : allEmps) {
System.out.println(allEmp);
}
MybatisUtil.closeSession(sqlSession);
}