mybatisplus插件分页
时间: 2025-06-03 14:19:22 浏览: 15
### MyBatisPlus 分页插件使用教程及常见问题解答
MyBatisPlus 的分页插件是其核心功能之一,能够与 MyBatis 框架无缝集成,并支持多种数据库,包括 MySQL、Oracle 和 SQL Server 等[^1]。以下是关于 MyBatisPlus 分页插件的详细使用方法和常见问题解决方案。
---
#### 一、分页插件的基本配置
在使用分页插件之前,需要完成以下配置:
1. **引入依赖**
在项目的 `pom.xml` 文件中添加 MyBatisPlus 的依赖:
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
```
2. **注册分页插件**
在 Spring Boot 配置类中注册分页插件:
```java
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 根据数据库类型选择
return interceptor;
}
}
```
---
#### 二、分页查询的基本用法
MyBatisPlus 提供了两种主要的分页查询方式:无条件分页和有条件分页。
1. **无条件分页查询**
如果没有筛选条件,可以直接调用 `page` 方法进行分页查询:
```java
@Override
public Result queryList(Integer currentPage, Integer pageSize) {
IPage<TRecruitmentAticle> page = query().page(new Page<>(currentPage.longValue(), pageSize.longValue()));
return Result.ok(page);
}
```
上述代码展示了如何通过 `BaseMapper` 或 `ServiceImpl` 提供的 `page` 方法实现无条件分页查询[^3]。
2. **有条件分页查询**
当需要根据某些条件进行分页时,可以结合 `Wrapper` 使用:
```java
@Override
public IPage<User> queryUserPage(int pageNo, int pageSize, String name) {
Page<User> page = new Page<>(pageNo, pageSize);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name", name).orderByDesc("id");
return userMapper.selectPage(page, queryWrapper);
}
```
在此示例中,`QueryWrapper` 用于定义查询条件,而 `selectPage` 方法实现了基于条件的分页查询[^4]。
---
#### 三、自定义 SQL 分页
如果需要对复杂查询语句进行分页,可以通过自定义 Mapper 实现。例如,在教师表中查询符合条件的教师对象并分页:
```sql
SELECT * FROM teacher WHERE name IS NOT NULL AND title = '讲师' AND age < 40;
```
对应的 Java 代码如下:
```java
@Mapper
public interface TeacherMapper extends BaseMapper<Teacher> {
IPage<Teacher> selectTeacherPage(Page<Teacher> page, @Param("ew") Wrapper<Teacher> queryWrapper);
}
@Override
public IPage<Teacher> getTeacherPage(int pageNo, int pageSize) {
Page<Teacher> page = new Page<>(pageNo, pageSize);
QueryWrapper<Teacher> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("name").eq("title", "讲师").lt("age", 40);
return teacherMapper.selectTeacherPage(page, queryWrapper);
}
```
上述代码展示了如何通过自定义 SQL 实现分页功能[^2]。
---
#### 四、分页参数与排序支持
MyBatisPlus 的分页插件还支持分页参数和排序参数的灵活配置。例如:
```java
int pageNo = 1, pageSize = 5; // 分页参数
Page<User> page = new Page<>(pageNo, pageSize);
// 添加排序规则
page.addOrder(new OrderItem("balance", false)); // 按 balance 字段降序排列
page.addOrder(new OrderItem("id", false)); // 按 id 字段降序排列
userService.page(page);
```
通过 `Page` 对象,可以方便地设置分页参数和排序规则[^5]。
---
#### 五、常见问题及解决方法
1. **分页插件未生效**
- 检查是否正确注册了分页插件。
- 确保 SQL 查询语句符合分页插件的要求(如必须包含 `LIMIT` 或类似关键字)。
2. **分页结果为空**
- 确认查询条件是否正确。
- 检查数据库中是否存在满足条件的数据。
3. **分页性能优化**
- 使用索引优化查询条件。
- 减少返回字段数量,避免不必要的数据加载。
---
阅读全文
相关推荐

















