MyBatis-Plus 分页失效了吗❓通过Springboot 集成 Mybatis-plus 进行实现列表分页功能。
引言
天下难事,必做于易;天下大事,必做于细。
注意细节,才能在生活中找到微小的幸福。
事情经过
随后在项目开发过程中,也使用了这种方式,主要目的就是不想写sql,想偷次懒。在完成的过程中真叫一个爽,我直接就在 Controller 里面调用 service 直接就完成分页操作了,静静的等待前端妹子和我调试接口。
就这样等着等着,我就摸着摸着 . . . . . .
由于剩下的接口不多了,上周六临时决定过来加班了。中间也就修改了几个小问题,直到下午五点多,前端妹子发过来问题说,分页功能有问题,当到第二页的时候还是返回第一页的数据。心想着不可能呀,Mybatis-plus 肯定对分页进行处理了,怀着怀疑的心态打开代码准备运行复现。
问题复现
数据库里面有10条数据,每页显示5条。
打开之前的测试代码,设置页码和数量(第2页,每一页5条数据)
@Override
public IPage<User> getUserPage() {
//构建分页模型,拼装参数(第3页,每一页5条数据)
Page page = new Page<>(2, 5);
//执行分页查询,返回对应实体类分页
return userMapper.selectPage(page,new LambdaQueryWrapper<>());
}
运行过程中的sql:
第二页是可以获取到数据的,并且就是需要的第二页的数据。
于是在执行一次获取第三页的数据
根据执行结果来说,当第三页的时候,返回的是第一页的数据。
正常来说,第二页能获取到数据证明分页功能是没问题的;第三页没有的话是不执行查询列表sql的,结果执行了,证明那块配置有问题。
怀着这样的疑问,检查了一遍配置,感觉是没有问题的。感觉有点怀疑 Mybatis-plus 是不是就是这样的呢,不可能要改变写法,再去写sql吧!
还是抱着怀疑的态度,找寻着解决方式. . . . . .
看着时间已经马上六点了,马上下班了。这样吧,死马当活马医,改变之前配置Mybaits-plus进行配置config的方法。
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
执行sql结果
这个时候,当是第三页的话,只有一个执行查询数量的sql。这下证明之前的配置是有问题的。
回到之前的配置
@Configuration
public class MybatisPlusConfig {
/**
* 新的插件配置
* PaginationInnerInterceptor分页一缓和二缓遵循mybatis的规则 PaginationInnerInterceptor
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 配置分页插件
PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
paginationInnerInterceptor.setOverflow(true);
paginationInnerInterceptor.setMaxLimit(1000L);
interceptor.addInnerInterceptor(paginationInnerInterceptor);
return interceptor;
}
}
中间有个属性,
paginationInnerInterceptor.setOverflow(true);
。 这个解释为:设置请求的页面大于最大页操作,true回到首页, false(默认)继续请求。 简单理解为:当分页的页码大于总页码的时候,设置true就会返回第一页的数据,反之就不会返回。
然后,就把这个属性去掉了,或者也可设置成 false ,效果是一样的。
其实,还有一种方式,当第三页的时候,分页中返回当前页current=1
,也可根据这个进行判断进行处理。
执行一遍,没有问题,上代码下班!!!
总结
可见,一个小小的细节不注意,就会出现问题。
虽然一直在使用,还是对有些技术研究太浅。在后期的工作中,还得多学多练多看才行!
展望
人生的道路上,从来没有全身而退。
人生没有多走的路,每走一步都是进步。
转载自:https://juejin.cn/post/7408696730801209356