MyBatis使用PageHelper
大约 1 分钟
查询结果的分页,JDBC 中采用的是 limit 关键字:
SELECT ... LIMIT startIndex, startNum
# startIndex = (pageNum-1)*pageSize
SELECT ... LIMIT (pageNum-1)*pageSize, startNumMybatis中,可用通过占位符传参的方式使用 limit 进行分页,但不仅麻烦,而且和 JDBC 一样无法获取到分页的更多信息,如:
- 这个结果是怎么进行分页的?
- 这个结果是第几页,记录有多少条?
- 这些结果在原结果集中的第几行到第几行?
- 这个分页下的前一页和后一页的下标是多少?
- ...
PageHelper 插件
PageHelper是一个用于Java平台的开源分页插件,它可以在MyBatis、Hibernate等持久化框架中实现分页功能。
使⽤PageHelper插件进⾏分⻚,更加的便捷且功能丰富。
通常使用 PageHelper 获取分页信息,然后封装到 request 域中返回给前端,前端根据这些进行,精确地渲染有关分页的元素。
使用 PageHelper:
引入依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.3.1</version> </dependency>在 mybatis-config.xml ⽂件中配置插件
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins>SQLMapper.xml
- PageHelper 是在 SQL 的末尾追加
limit子句,故SqlMapper文件的Sql语句不要以;结尾。(?也许可以)
- PageHelper 是在 SQL 的末尾追加
编写java代码
// 开启分⻚ PageHelper.startPage(2, 2); // 执⾏查询语句 List<Car> cars = mapper.selectAll(); // 获取分⻚对象 PageInfo<Car> pageInfo = new PageInfo<>(cars, 5); // 获取分页信息 pageInfo.getXxx();- 开启分页必须在查询前。
- 获取分页信息对象必须在查询后。
