mybatisplus-3.3.0 如何开启分页
时间: 2025-02-24 18:35:15 浏览: 45
<think>嗯,用户想了解如何在MyBatisPlus 3.3.0中开启分页。首先,我得回忆一下MyBatisPlus的配置步骤。分页功能通常需要配置一个分页拦截器,对吧?记得在旧版本里可能是用PaginationInterceptor,但版本更新后可能有变化。
用户提到的是3.3.0版本,我需要确认这个版本对应的配置方式。比如,在MyBatisPlus 3.4.0之后,配置类改成了MybatisPlusInterceptor,然后通过添加插件的方式,比如添加分页插件。但3.3.0可能还是用旧的方法,或者已经开始过渡到新的方式?
查一下官方文档或者版本更新日志可能会有帮助。假设用户用的是3.3.0,可能还是需要配置PaginationInterceptor这个拦截器。然后,在配置类中声明一个Bean,这样Spring就能管理它了。
另外,用户可能需要知道如何编写分页查询的代码。通常是在Service层中创建一个Page对象,传入当前页和每页大小,然后调用Mapper的selectPage方法,或者使用Service的page方法。同时,分页查询的条件可能需要构建QueryWrapper。
需要注意的是,分页配置是否正确会影响是否执行物理分页而不是内存分页。此外,不同的数据库有不同的分页语法,MyBatisPlus应该会根据配置的数据库类型自动处理。
可能还需要提醒用户添加MyBatisPlus的依赖,确保版本正确。以及,在application.yml或properties中配置数据库类型,虽然有时候拦截器会自动检测,但显式配置更稳妥。
用户可能有Spring Boot项目,所以配置类应该放在合适的位置,用@Configuration注解。然后,分页查询的示例代码可能需要展示如何返回分页结果,包含记录和总条数等信息。
还有,是否需要在Controller中处理分页参数,比如接收current和size参数,然后传递给Service层。这部分可能用户自己处理,但示例中可以简单提及。
最后,可能的常见问题,比如分页不生效,可能原因是没有配置拦截器,或者数据库方言不对,或者Page参数有误。这些可以作为注意事项提醒用户。</think>在 MyBatis-Plus 3.3.0 中开启分页功能需要配置分页插件(拦截器),以下是具体步骤:
---
### 1. **配置分页拦截器**
在 Spring Boot 的配置类中注册 `PaginationInterceptor` Bean:
```java
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
```
---
### 2. **编写分页查询代码**
在 Service 或 Mapper 层使用 `Page` 对象进行分页查询:
#### 方式一:Mapper 接口直接调用
```java
// 创建分页参数(当前页、每页条数)
Page<User> page = new Page<>(1, 10); // 查询第1页,每页10条
// 执行分页查询(需传入分页参数和查询条件)
Page<User> result = userMapper.selectPage(page, new QueryWrapper<User>().eq("status", 1));
// 获取分页结果
List<User> records = result.getRecords(); // 当前页数据
long total = result.getTotal(); // 总记录数
```
#### 方式二:Service 层调用
如果继承 `ServiceImpl`,可直接使用 `page` 方法:
```java
Page<User> page = new Page<>(1, 10);
Page<User> result = userService.page(page, new QueryWrapper<User>().eq("status", 1));
```
---
### 3. **注意事项**
1. **数据库方言支持**
MyBatis-Plus 默认根据数据库 URL 自动检测方言,若需手动指定,可在配置拦截器时设置:
```java
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor interceptor = new PaginationInterceptor();
interceptor.setDbType(DbType.MYSQL); // 指定数据库类型(如 MySQL、Oracle)
return interceptor;
}
```
2. **避免内存分页**
确保 SQL 中不要手动添加 `LIMIT`,否则可能导致物理分页失效,转为内存分页(性能差)。
3. **自定义分页 SQL**
如需手动编写分页 SQL,在 XML 或注解中使用 `IPage` 对象作为参数:
```xml
<select id="selectUserPage" resultType="User">
SELECT * FROM user WHERE status = #{status}
</select>
```
Mapper 接口:
```java
IPage<User> selectUserPage(IPage<User> page, @Param("status") Integer status);
```
---
### 完整示例(Spring Boot)
1. **依赖配置(pom.xml)**
```xml
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.3.0</version>
</dependency>
```
2. **Controller 示例**
```java
@GetMapping("/users")
public Page<User> getUsers(
@RequestParam(defaultValue = "1") Integer current,
@RequestParam(defaultValue = "10") Integer size) {
Page<User> page = new Page<>(current, size);
return userService.page(page, new QueryWrapper<User>().eq("status", 1));
}
```
---
通过以上步骤即可在 MyBatis-Plus 3.3.0 中实现分页功能。如果分页未生效,请检查拦截器配置是否正确或 SQL 是否存在手动分页语句。
阅读全文
相关推荐
















