目录
- 问题描述:
- 解决方案:
- 1.配置mybatisplus拦截器PaginationInterceptor
- 2.自行编写SQL语句查询
问题描述:
在前端使用Map<String, Object> params,把page,limit参数作为请求体传送到后端,但是分页查询老是全部返回。
解决方案:
1.配置mybatisplus拦截器PaginationInterceptor
PaginationInterceptor 是 MyBatis-Plus 提供的一个拦截器,用于在执行 SQL 查询时自动进行分页处理。它的原理是通过拦截 MyBatis 的 Executor 对象,在执行 SQL 之前修改 SQL 的语句,加入分页的逻辑。具体来说,PaginationInterceptor 在执行 SQL 之前会拦截 Executor 对象的 query 方法,在其中动态修改 SQL 语句,加入类似 LIMIT offset, size 的分页逻辑,其中 offset 表示偏移量,size 表示每页数据条数。
通过将 PaginationInterceptor 注入到 Spring 容器中,Spring Boot 就会在启动时自动加载并应用这个拦截器。一旦拦截器生效,所有的查询操作都会自动加入分页逻辑,从而实现了全局的分页功能,而无需手动在每个查询方法中编写分页逻辑。
配置类如下:
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
}
2.自行编写SQL语句查询
SELECT * FROM table_name LIMIT offset, size;
其中,offset 表示偏移量(即跳过的行数),size 表示每页数据条数。