分页插件
一、配置插件
-
添加依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.2.0</version> </dependency>
-
在核心配置文件mybatis-config.xml中设置
<!-- 设置分页插件 --> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins>
二、参数说明
-
序号 参数 含义 1 pageNum 当前页的页码 2 pageSize 每页显示的条数 3 size 当前页显示的真实条数 4 total 总记录数 5 pages 总页数 6 prePage 上一页的页码 7 nextPage 下一页的页码 8 isFirstPage/isLastPage 是否为第一页/最后一页 9 hasPreviousPage/hasNextPage 是否存在上一页/下一页 10 navigatePages 导航分页的页码数 11 navigatePageNums 导航分页的页码,[1,2,3,4,5]
三、使用MyBatis的分页插件实现分页
-
需要在查询功能之前开启分页
Page<Object> page = PageHelper.startPage(int pageNum, int pageSize);
// page中的内容 Page{ // 1 count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=30, pages=10, reasonable=false, pageSizeZero=false} // 2 [Emp{eid=4, empName='赵六', age=23, sex='女', email='zhaoliu@qq.com', did=1}, Emp{eid=5, empName='田七', age=23, sex='男', email='tianqi@qq.com', did=2}, Emp{eid=10, empName='a', age=23, sex='女', email='a@qq.com', did=null}]
-
在查询功能之后获取分页相关信息
PageInfo<Emp> page = new PageInfo<>(list查询结果,navigatePages)
// info中的内容 PageInfo{ // 1 pageNum=2, pageSize=3, size=3, startRow=4, endRow=6, total=30, pages=10, // 2 list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=30, pages=10, reasonable=false, pageSizeZero=false} // 3 [Emp{eid=4, empName='赵六', age=23, sex='女', email='zhaoliu@qq.com', did=1}, Emp{eid=5, empName='田七', age=23, sex='男', email='tianqi@qq.com', did=2}, Emp{eid=10, empName='a', age=23, sex='女', email='a@qq.com', did=null}] // 4 prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, navigatePages=3, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}
-
测试程序
@Test public void test2() { try { InputStream is = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); SqlSession sqlSession = factory.openSession(true); EmpMapper mapper = sqlSession.getMapper(EmpMapper.class); Page<Object> page = PageHelper.startPage(2, 3); List<Emp> emps = mapper.selectByExample(null); System.out.println("page = " + page); emps.forEach(emp -> System.out.println(emp)); PageInfo<Emp> info = new PageInfo<>(emps, 3); System.out.println("info = " + info); } catch (IOException e) { e.printStackTrace(); } }