问题描述
`提示:
例如:使用mybatis plus 出现两个limit
原因分析:
1.PageHelper 的使用问题,
使用ThreadLocal 缓存page对象,当线程再次进入的时候未清理page导致,具体源码有空再仔细分析下。
解决:
PageHelper.clearPage();
手动执行清楚,或者保证pagehlper下一句就是sql执行语句。
2. sql里面已经含有limit
这个属于较低级的错误,解决办法自己想把
3.实例化多个分页拦截器
我遇到的和上面的不一样,项目使用了mybatisplus,
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
版本是
3.4.1
mybatisplus3.4之后不建议使用pageinterceptor了
// @Bean
// public PaginationInterceptor paginationInterceptor() {
// //启动BaseMapper分页
// return new PaginationInterceptor();
// }
在引入的common包里面新加了新的引入分页插件的bean
mybatisPlusInterceptor
这时候就有两个分页拦截器了
PaginationInterceptor 和mybatisPlusInterceptor ,mybatis对于拦截器是循环执行的也就是两个都会执行,就会生成两个limit
解决
注释掉原来已经弃用的bean注入,
@Bean
public PaginationInterceptor paginationInterceptor() {
//启动BaseMapper分页
return new PaginationInterceptor();
}
总结
总结了几种失效的情况,不对的可以指出,一起交流。