1. 背景
在 mybatis 中经常用到分页查询,本文介绍下使用 PageHelper 进行分页查询。
2.知识
MyBatis 分页插件 – PageHelper。如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。
使用分为这几步:
- 配置 mybatis 分页插件
- 代码中使用
配置 mybatis 分页插件
修改 mybatis-config.xml 配置文件。
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<!-- <property name="param1" value="value1"/>-->
</plugin>
</plugins>
复制代码
- 注意在 mybatis 配置文件中的顺序,放在 之前。
3. 示例
类库依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.1</version>
</dependency>
复制代码
先写一个 mapper 类,映射到具体的sql。
public interface CityMapper {
@Select("SELECT * FROM city ")
List<City> selectByPage1();
List<City> selectByPage2();
}
复制代码
调用时,像平时一样写 查询语句,具体在调用前先 “启动开发分页”
PageHelper.startPage(1, 5);
复制代码
剩下的就交给插件来做了,它会自动的帮忙调整查询的sql语句,返回结果。
拿到结果后,一般会拼装成一个pageInfo 对象,这个插件也提供了,像下面这样,PageInfo 已包含了 totoal ,pageSize 等字段:
PageInfo page = new PageInfo(page1);
复制代码
完整调用示例:
private static void testSelect(SqlSessionFactory sqlSessionFactory) {
try (SqlSession session = sqlSessionFactory.openSession(true)) {
CityMapper mapper = session.getMapper(CityMapper.class);
PageHelper.startPage(1, 5);
List<City> page1 = mapper.selectByPage1();
printArray(page1);
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(page1);
printf("page = %s", page);
}
}
复制代码
我的代码示例见:
github.com/vir56k/java…
4. 在 springboot 项目中使用
5. 参考:
官方主站:
github.com/pagehelper/…
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END