升级mybatis-plus分页插件不起作用

背景:项目从jpa换成mybatis后面又升级成mybatis-plus,并且项目使用了多数据源,所以自定义mybatis方便对数据源操作。
自定义实现

@Configuration
public class CmsSqlSessionConfig {

    @Bean(name = "cmsSqlSessionFactory")
    @Primary
    public SqlSessionFactory apiSqlSessionFactory(@Qualifier("cmsSource") DataSource datasource )
            throws Exception {
        MybatisSqlSessionFactoryBean factoryBean=new MybatisSqlSessionFactoryBean();
        MybatisConfiguration configuration=new MybatisConfiguration();
        configuration.setMapUnderscoreToCamelCase(true);
        factoryBean.setConfiguration(configuration);
        factoryBean.setDataSource(datasource);
        factoryBean.setTypeAliasesPackage("com.aggrx.dianyue.cms.model.entity");
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/cms/*.xml"));
        return factoryBean.getObject();
    }

    @Bean("cmsSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate cmsSqlSessionTemplate(
            @Qualifier("cmsSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

    @Bean(name = "cmsMybatisPlusInterceptor")
    public MybatisPlusInterceptor cmsMybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //向Mybatis过滤器链中添加分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }


}

写sql的时候发现分页插件没起作用,最后查到原因是多数据源,导致了该拦截器配置无法发挥作用,应该在数据源配置类中配置分页拦截器(应该把拦截器配置在MybatisSqlSessionFactoryBean中让他起作用)

@Configuration
public class CmsSqlSessionConfig {

    @Bean(name = "cmsSqlSessionFactory")
    @Primary
    public SqlSessionFactory apiSqlSessionFactory(@Qualifier("cmsSource") DataSource datasource
            ,@Qualifier("cmsMybatisPlusInterceptor") MybatisPlusInterceptor cmsMybatisPlusInterceptor )
            throws Exception {
        MybatisSqlSessionFactoryBean factoryBean=new MybatisSqlSessionFactoryBean();
        MybatisConfiguration configuration=new MybatisConfiguration();
        configuration.setMapUnderscoreToCamelCase(true);
        factoryBean.setConfiguration(configuration);
        factoryBean.setDataSource(datasource);
        factoryBean.setPlugins(new Interceptor[]{cmsMybatisPlusInterceptor});
        factoryBean.setTypeAliasesPackage("com.aggrx.dianyue.cms.model.entity");
        factoryBean.setMapperLocations(
                new PathMatchingResourcePatternResolver().getResources("classpath*:mapper/cms/*.xml"));
        return factoryBean.getObject();
    }

    @Bean("cmsSqlSessionTemplate")
    @Primary
    public SqlSessionTemplate cmsSqlSessionTemplate(
            @Qualifier("cmsSqlSessionFactory") SqlSessionFactory sessionFactory) {
        return new SqlSessionTemplate(sessionFactory);
    }

    @Bean(name = "cmsMybatisPlusInterceptor")
    public MybatisPlusInterceptor cmsMybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //向Mybatis过滤器链中添加分页拦截器
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }


}

这回起作用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值