mybatisplus 3.5.1 分页查询
时间: 2025-05-16 22:49:33 浏览: 21
### MyBatisPlus 3.5.1 分页查询实现方式
#### 配置分页插件
为了在项目中启用分页功能,需要通过配置类注册 `MybatisPlusInterceptor` 插件。以下是完整的配置代码:
```java
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 添加分页拦截器,指定数据库类型为 MySQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
```
上述代码展示了如何在 Spring Boot 中配置分页插件[^2]。
---
#### 创建实体类和 Mapper 接口
假设有一个名为 `User` 的表,对应的实体类如下所示:
```java
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
```
接着定义相应的 Mapper 接口,继承自 `BaseMapper<User>`:
```java
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
```
---
#### 编写分页查询方法
调用分页查询时,可以使用 `Page<T>` 类作为参数传递给 Mapper 方法。以下是一个简单的示例:
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/page")
public IPage<User> getUserPage(@RequestParam(defaultValue = "1") int current,
@RequestParam(defaultValue = "10") int size) {
// 构造 Page 对象,传入当前页码和每页大小
Page<User> page = new Page<>(current, size);
// 调用 selectPage 方法执行分页查询
IPage<User> result = userMapper.selectPage(page, null);
return result;
}
}
```
在此示例中,`selectPage` 是 MyBatis-Plus 提供的一个内置方法,用于完成分页操作[^3]。
---
#### 前端返回数据结构
前端接收到的数据通常会包含总记录数、当前页码以及实际的列表数据。例如:
```json
{
"pages": 5,
"total": 47,
"size": 10,
"current": 1,
"records": [
{"id": 1, "name": "Alice", "age": 25, "email": "[email protected]"},
{"id": 2, "name": "Bob", "age": 30, "email": "[email protected]"}
]
}
```
这种 JSON 结构便于前端解析并展示分页信息。
---
#### 手动分页(可选)
如果不想依赖 MyBatis-Plus 的分页插件,也可以手动编写 SQL 查询语句来实现分页逻辑。这种方式适用于某些特殊场景下的优化需求。例如:
```sql
SELECT * FROM user LIMIT #{offset}, #{pageSize};
```
其中,`#{offset}` 和 `#{pageSize}` 可以由程序动态计算得出[^1]。
---
阅读全文
相关推荐


















