PageHelper是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。
查询数据库展示到前端的过程中不可避免的要考虑到分页问题,这时就引入了Mybatis的PageHelper插件,这个插件对分页功能进行了强有力的封装。下面来看看。
使用pageHelper
1.导入所需要的依赖
<!-- Mybatis 框架 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.30</version>
</dependency>
<!-- 日志依赖 -->
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- pagehelper分页插件 -->
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.10</version>
</dependency>
2.在mybatis的全局配置文件中配置 插件拦截器 (注意配置顺序)
<!-- 配置插件 plugin标签配置一个插件 -->
<plugins>
<!-- 配置分页插件 pageHelper -->
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="param1" value="value1"/>
</plugin>
</plugins>
测试
- 使用分页插件的第一种常用方式 静态调用: PageHelper.startPage(pageNum,pageSize)
这种方式是我们要掌握的 在你需要进行分页的 MyBatis 查询方法前调用PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。
@Test
void test()throw Exception{
String resource = "mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建sql会话
SqlSession session = sqlSessionFactory.openSession(true);
//根据持久层接口反射创建持久层实现类
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
/*************************************************************
使用分页插件的第一种方式:静态调用 PageHelper.startPage(pageNum,pageSize)
pageNum:显示的页数,pageSize页数的条目
**************************************************************/
//设置分页
PageHelper.startPage(1,10); 查询第1页10条数据
//查询所有员工 (由于设置了分页拦截器,这里只会查询出10条记录)
List<Employee> list = mapper.selectAll();
for(Employee e:list) {
System.out.println(e.toString());
}
}
输出
- 第二种常用方式使用PageInfo对象管理页码
数据分页显示在前端上,我们还要计算:总页数、当前页、上一页、下一页,总记录数.....这些功能PageInfo对象已经为我们封装好啦。下面来看看
@Test
public void test(){
String resource = "mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建sql会话
SqlSession session = sqlSessionFactory.openSession(true);
//根据持久层接口反射创建持久层实现类
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
//*******************分页**************************
List<Employee> empAll = mapper.selectAll(); //查询出所有的员工
PageHelper.startPage(5, 10); //查询第5页的10条数据
List<Employee> empAll = mapper.selectAll(); //查询所有的员工
System.out.println("List集合存储Employee的总数:"+empAll.size());
//构造方法创建PageInfo对象管理页码
PageInfo<Employee> info = new PageInfo<Employee>(empAll); //将员工结果集List集合传入PageInfo构造方法 泛型指定
System.out.println("当前页数:"+info.getPageNum());
System.out.println("上页码:"+info.getPrePage());
System.out.println("下页数:"+info.getNextPage());
System.out.println("总页码:"+info.getPages());
System.out.println("总记录数:"+info.getTotal());
//getList 方法返回List集合
for(Employee e:info.getList()) {
System.out.println(e.toString());
}
}
输出:
来源:CSDN
作者:剥包谷
链接:https://blog.csdn.net/weixin_42325327/article/details/103777079