MybatisPlus 页数page过大数据溢出问题
·
最近在修改公司代码时前端报了个奇怪的bug,即某个分页接口明明数据量只有42条,但是使用page = 500
size = 10
的配置时仍然可以查出数据
如下图所示
可见 total 属性只有 42条数据,页数都到500了但是很夸张的还是查出来10条数据

查询后端代码后发现使用的是 MP 的分页插件
// 封装分页查询器对象
Page<CommodityEntity> iPage = Page.of(page, size);
Page<CommodityEntity> commodityEntityPage = commodityMapper.selectPage(iPage, wrapper);
可见代码逻辑处没有问题,一时是有点蒙的,排查中突然想起 MP 存在分页配置插件,于是乎找到
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
paginationInnerInterceptor.setDbType(DbType.MYSQL);
// 着重注意这一行
paginationInnerInterceptor.setOverflow(true);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
这一行的作用就是在你的查询页数超出实际数据量时,会默认重置页数为 1 ,许多小伙伴可能之前并没有留意过这个配置
将这行注释掉后再请求测试

查不出溢出数据了!成功
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)