MyBatis-Plus中的selectPage
时间: 2025-05-09 10:06:13 浏览: 21
### MyBatis-Plus 中 `selectPage` 方法的使用教程
#### 配置分页插件
为了使 `selectPage` 方法正常工作,必须先在项目中配置分页插件。以下是配置分页插件的具体代码示例:
```java
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页拦截器并指定数据库类型为 MySQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
```
上述代码通过创建一个自定义配置类来注册 `MybatisPlusInterceptor` 插件,并将其添加到 Spring 容器中[^3]。
---
#### 使用 `selectPage` 进行分页查询
`selectPage` 是 MyBatis-Plus 提供的一个便捷方法,用于执行基于 Mapper 的分页查询操作。其基本语法如下所示:
```java
IPage<T> page = mapper.selectPage(Page<T>, Wrapper);
```
其中:
- **`Page<T>`** 表示分页对象,包含当前页码 (`current`) 和每页显示记录数 (`size`)。
- **`Wrapper`** 是条件构造器,可以用来动态拼接 SQL 查询条件。
以下是一个完整的例子,展示如何调用 `selectPage` 并获取分页数据:
```java
// 创建分页对象,参数分别为当前页和每页大小
Page<Line> page = new Page<>(1, 6);
// 构造查询条件 (可选)
QueryWrapper<Line> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", "example"); // 假设按 name 字段模糊匹配
// 调用 selectPage 执行分页查询
IPage<Line> resultPage = lineMapper.selectPage(page, queryWrapper);
// 获取分页后的记录列表
List<Line> records = resultPage.getRecords();
// 输出总记录数和其他分页信息
System.out.println("Total Records: " + resultPage.getTotal());
System.out.println("Current Page: " + resultPage.getCurrent());
System.out.println("Pages Count: " + resultPage.getPages());
```
如果未正确配置分页插件,则可能导致分页功能无法生效[^1]。
---
#### 设置排序规则
除了基础的分页外,还可以通过链式调用设置排序规则。例如,按照某个字段降序排列:
```java
page.setAsc(false); // 是否升序,默认 true
page.orders(Collections.singletonList(OrderItem.desc("order_time")));
```
或者直接在 `QueryWrapper` 中指定排序逻辑:
```java
queryWrapper.orderByDesc("order_time");
```
这两种方式都可以实现对分页结果的排序处理[^2]。
---
#### 注意事项
1. 如果分页功能仍然不生效,请确认是否已启用分页插件以及数据库连接池支持分页语句。
2. 当前版本可能会影响某些高级特性兼容性,请确保使用的 MyBatis-Plus 版本是最新的稳定版。
---
阅读全文
相关推荐


















