在 mybatis 中经常用到分页查询,本文介绍下使用 PageHelper 进行分页查询。
MyBatis 分页插件 - PageHelper。如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。
使用分为这几步:
配置 mybatis 分页插件 修改 mybatis-config.xml 配置文件。
<plugins>
<!-- com.github.pagehelper为PageHelper类所在包名 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
<!-- <property name="param1" value="value1"/>-->
</plugin>
</plugins>
类库依赖
<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);
}
}
我的代码示例见: https://github.com/vir56k/java_demo/tree/master/mybatisdemo9_pager
参考:https://github.com/abel533/MyBatis-Spring-Boot
官方主站: https://github.com/pagehelper/Mybatis-PageHelper/blob/master/README_zh.md
https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md