【问题描述】
在使用MybatisPlus的selectPage时发现分页不起作用,每次返回的都是全部的数据,同时getPages()和getTotal()返回的都是0。
【相关代码】
mybatisPlus的版本:
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.1</version></dependency>
selectPage操作的示例代码:
IPage<UserBuyCarsDao> userBuyCarsDaoPage = userBuyCarsMapper.selectPage(new Page<>(currentPage, pageSize), new LambdaQueryWrapper<UserBuyCarsDao>().eq(UserBuyCarsDao::getUserCode, userCode).eq(UserBuyCarsDao::getIsDelete, 0));
其中UserBugCarsDao和userBugCarsMapper都定义完整,不会存在问题。
如果使用分页操作是需要添加拦截器的,config代码如下:
@Configuration
@MapperScan(basePackages = {"com.core.mapper"})
public class MybatisPlusConfig {/*** 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}@Beanpublic PaginationInnerInterceptor paginationInnerInterceptor() {PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();paginationInnerInterceptor.setOverflow(false);return paginationInnerInterceptor;}
}
【问题定位】
初步怀疑是拦截器没有生效,为了验证这一点,在mybatisPlusInterceptor()函数中打一个断点。执行测试程序,发现确实没有进入这个函数。
为什么MybatisPlusInterceptor这个bean注册不成功?是不是启动程序没有扫描到这个@Configuration标记。
查看springboot的启动类,发现确实没有扫描到这个包文件。
【问题修复】
在springboot启动类中增加扫描config文件的路径,示例如下:
然后再执行debug,发现可以进入mybatisPlusInterceptor的断点。