spring boot使用mybatis-plus实现分页功能
使用 MyBatis-Plus 实现分页功能
MyBatis-Plus 提供了内置的分页插件,可以轻松实现分页查询功能。以下是实现分页的具体方法:
配置分页插件
在 Spring Boot 项目中,需要在配置类中注册分页插件:
@Configuration
public class MybatisPlusConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}
}
使用分页查询
在 Service 层或 Controller 层中,可以通过 Page
对象实现分页查询:
// 创建分页对象,参数为当前页码和每页显示数量
Page<User> page = new Page<>(1, 10);// 调用 MyBatis-Plus 提供的分页查询方法
Page<User> userPage = userMapper.selectPage(page, null);// 获取分页数据
List<User> users = userPage.getRecords();
long total = userPage.getTotal();
自定义分页查询
如果需要自定义分页查询 SQL,可以使用 MyBatis-Plus 的 IPage
接口:
@Select("SELECT * FROM user WHERE age > #{age}")
IPage<User> selectByAge(IPage<User> page, @Param("age") Integer age);
调用方法:
Page<User> page = new Page<>(1, 10);
IPage<User> userPage = userMapper.selectByAge(page, 18);
前端分页参数传递
前端通常需要传递当前页码和每页大小,后端可以通过参数接收:
@GetMapping("/users")
public PageResult<User> getUsers(@RequestParam(defaultValue = "1") Integer current,@RequestParam(defaultValue = "10") Integer size) {Page<User> page = new Page<>(current, size);Page<User> result = userService.page(page);return new PageResult<>(result.getRecords(), result.getTotal());
}
注意事项
- 分页插件会自动拦截带有
IPage
参数的方法,并生成分页 SQL。 - 数据库类型需正确配置,如
DbType.MYSQL
或DbType.ORACLE
。 - 如果使用 XML 文件编写 SQL,需确保 SQL 语句可以被分页插件优化。