mybatis分页插件如何使用
时间: 2023-11-18 15:05:36 浏览: 82
Mybatis分页插件使用方法详解
MyBatis 分页插件是 MyBatis 官方提供的一个用于分页查询的插件,可以方便地实现分页查询功能。使用 MyBatis 分页插件需要以下步骤:
1. 引入 MyBatis 分页插件的依赖包。
Maven 依赖:
```xml
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.2.0</version>
</dependency>
```
Gradle 依赖:
```groovy
implementation 'com.github.pagehelper:pagehelper:5.2.0'
```
2. 在 MyBatis 的配置文件中配置分页插件。
```xml
<!-- 配置 PageHelper 插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!-- 以下为可选配置,不配置就使用默认值 -->
<!-- 默认值为 true,该参数对使用 RowBounds 作为分页参数时有效 -->
<property name="offsetAsPageNum" value="true"/>
<!-- 默认值为 false,该参数对使用 RowBounds 作为分页参数时有效 -->
<property name="rowBoundsWithCount" value="true"/>
<!-- 默认值为 false,启用合理化时,如果 pageNum<1 会查询第一页,如果 pageNum>pages 会查询最后一页 -->
<!-- 禁用合理化时,如果 pageNum<1 或 pageNum>pages 会返回空数据 -->
<property name="reasonable" value="false"/>
<!-- 默认值为 false,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit = 0 就会查询出全部的结果 -->
<!-- (相当于没有执行分页查询,但是返回结果仍然是 Page 类型) -->
<property name="pageSizeZero" value="false"/>
<!-- 默认值为 false,当该参数设置为 true 时,使用 RowBounds 分页会进行 count 查询 -->
<property name="supportMethodsArguments" value="false"/>
<!-- 默认值为 true,当该参数设置为 true 时,会将 RowBounds 的 offset 参数当成 pageNum 使用 -->
<!-- 和 startPage 中的 params 参数合并成 Map,然后分页查询,如果参数中包含 Page 类型的参数,则进行分页返回 -->
<property name="autoRuntimeDialect" value="false"/>
<!-- 默认值为 true,使用 PageHelper 时会自动检测当前 SQL 是否支持分页查询,如果不支持则抛出异常 -->
<property name="autoDialect" value="true"/>
<!-- 配置数据库方言,用于支持不同的数据库 -->
<property name="dialect" value="mysql"/>
</plugin>
</plugins>
```
3. 在代码中使用分页插件。
使用分页插件需要设置分页参数,可以使用 PageHelper.startPage 方法实现,该方法会将我们的查询语句重新包装,以实现分页查询功能。例如:
```java
// 设置分页参数
PageHelper.startPage(pageNum, pageSize);
// 执行查询
List<User> userList = userDao.selectUsers();
// 封装查询结果
PageInfo<User> pageInfo = new PageInfo<>(userList);
// 获取分页信息
long total = pageInfo.getTotal(); // 总记录数
int pages = pageInfo.getPages(); // 总页数
List<User> list = pageInfo.getList(); // 当前页数据
// 返回分页结果
return new PageResult<>(total, pages, list);
```
其中,pageNum 表示要查询的页码,pageSize 表示每页的记录数。在查询之后,我们可以通过 PageInfo 类获取分页信息,如总记录数、总页数和当前页数据。
阅读全文