mybatisplus 翻页
时间: 2025-05-14 16:01:09 浏览: 10
### MyBatisPlus 分页查询实现方法
MyBatis-Plus 提供了一种简单高效的分页方式,基于 `Page` 类来完成分页逻辑。以下是其实现的具体说明:
#### 配置分页拦截器
为了启用 MyBatis-Plus 的分页功能,需要配置分页拦截器。该拦截器会拦截 SQL 请求并将其转换为带有 LIMIT 和 OFFSET 子句的分页查询语句[^3]。
```java
@Configuration
public class MyBatisConfig {
@Bean
public MybatisPlusInterceptor paginationInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
```
上述代码片段展示了如何通过 Spring Boot 配置类注册分页拦截器。其中 `DbType.MYSQL` 表示当前使用的数据库类型为 MySQL。
---
#### 使用 Page 对象执行分页查询
在实际业务场景中,可以通过创建 `Page<T>` 实例指定分页参数(如当前页码和每页大小),并将此对象传递给 Mapper 接口的方法调用[^1]。
以下是一个完整的分页查询示例:
```java
// 定义实体类对应的 Mapper 接口
public interface UserMapper extends BaseMapper<User> {}
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public IPage<User> getUserList(int currentPage, int pageSize) {
// 创建 Page 对象,传入当前页码和每页显示记录数
Page<User> page = new Page<>(currentPage, pageSize);
// 调用 Mapper 方法进行分页查询
return userMapper.selectPage(page, null);
}
}
```
在此示例中,`selectPage` 方法的第一个参数是 `Page` 对象,第二个参数可以用于设置自定义条件 Wrapper[^2]。
---
#### 前后端交互设计
当采用前后端分离架构时,前端通常向服务端发送请求携带分页参数(如 `current` 和 `size`),而后端返回封装好的分页结果数据结构。
假设前端发起如下 HTTP GET 请求:
```
GET /users?page=1&size=10
```
后台控制器接收这些参数并通过 Service 层获取分页数据:
```java
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping
public Result<IPage<User>> getUsers(@RequestParam int page, @RequestParam int size) {
IPage<User> userList = userService.getUserList(page, size);
return Result.success(userList);
}
}
```
最终响应体可能类似于以下 JSON 结构:
```json
{
"code": 200,
"message": "success",
"data": {
"records": [
{"id": 1, "name": "Alice"},
{"id": 2, "name": "Bob"}
],
"total": 100,
"pages": 10,
"current": 1,
"size": 10
}
}
```
此处 `records` 字段表示当前页的数据列表;`total` 表示总记录数;`pages` 表示总页数;`current` 和 `size` 则分别对应当前页码与每页条目数量。
---
#### 总结
MyBatis-Plus 的分页功能主要依赖于 `Page` 类及其内部机制,并配合分页拦截器完成物理分页操作。这种方式能够显著减少内存占用,提升大数据量下的查询效率。
---
阅读全文
相关推荐










