MyBatis 学习笔记(9) 分页查询

466 阅读1分钟

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 项目中使用

参考:github.com/abel533/MyB…

5. 参考:

官方主站: github.com/pagehelper/…

github.com/pagehelper/…