java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > MybatisPlus分页失效

MybatisPlus分页失效不起作用的解决

作者:数据猴赛雷

在使用MybatisPlus的selectPage时发现分页不起作用,每次返回的都是全部的数据,本文就来介绍一下MybatisPlus分页失效不起作用的解决,感兴趣的可以了解一下

【问题描述】

在使用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 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }

    @Bean
    public PaginationInnerInterceptor paginationInnerInterceptor() {
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
        paginationInnerInterceptor.setOverflow(false);
        return paginationInnerInterceptor;
    }
}

【问题定位】

初步怀疑是拦截器没有生效,为了验证这一点,在mybatisPlusInterceptor()函数中打一个断点。执行测试程序,发现确实没有进入这个函数。

为什么MybatisPlusInterceptor这个bean注册不成功?是不是启动程序没有扫描到这个@Configuration标记。

查看springboot的启动类,发现确实没有扫描到这个包文件。

【问题修复】

在springboot启动类中增加扫描config文件的路径,示例如下:

然后再执行debug,发现可以进入mybatisPlusInterceptor的断点。

到此这篇关于MybatisPlus分页失效不起作用的解决的文章就介绍到这了,更多相关MybatisPlus分页失效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文