MyBatis使用分页插件
MyBatis使用分页插件
PageHelper是国内非常优秀的开源mybatis分页插件,它支持基本主流与常用的数据库,例如:mysql、Oracle、DB2等。
PageHelper在GitHub的项目地址:https://github.com/pagehelper/Mybatis-PageHelper
分页插件的原理
(1)在 MyBatis 执行SQL语句之前,拦截器可以获取 SQL 语句,进而实现分页操作。
(2)PageHelper 提供一个分页查插件,该插件可以解析分页参数,比如:当前页码,每页显示记录等,插件会将这些参数转换为一个 Limit 语句,用于数据库查询分页。
分页插件---PageHelper使用
(1)引入pageHelper依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>最新版本</version>
</dependency>
这里的最新版本是写 PageHelper 的版本
(2)修改 mybatis 配置文件-加入拦截器
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<property name="param1" value="value1"/>
</plugin>
</plugins>
(3)测试代码
@Test
public void selectTest() throws Exception{
Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
SqlSession sqlSession = sqlSessionFactory.openSession();
EmployeeMapper employeeMapper = sqlSession.getMapper(EmployeeMapper.class);
//指定起始页和每页大小,通过这个进行分页固定(它会将SQL语句添加limit)
PageHelper.startPage(3,2);
//这里进行查询所有
List<Employee> employee = employeeMapper.selectEmployee();
//将查询的内容放到 pageInfo 中方面获取查询中的所有信息
PageInfo<Employee> pageInfo = new PageInfo<Employee>(employee);
System.out.println("总条数:"+pageInfo.getTotal());
System.out.println("页数量:" + pageInfo.getPageSize());
System.out.println("总页数: " + pageInfo.getPages());
System.out.println("每页实际的条数:" + pageInfo.getSize());
System.out.println("当前页的记录"+pageInfo.getList());
}
效果展示: