MybatisPlus分页插件失效问题

今天重写控台,之前用的是github的pageHelper分页。准备换成mybatisPlus的分页插件。替换后发现分页并没有生效。
原来的配置为:

@Configuration
public class MybatisInterceptorConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

sql语句为:

    @Select({""})
    @Results({
            @Result(property = "userId", column = "user_id"),
            @Result(property = "state", column = "user_id", javaType = List.class, many = @Many(select = "com.boutiquesf.service.admin.mapper.loan.AdDaichaoMarketingUserTagMapper.getTagByUserId"))
    })
    Page<DaichaoMarketingUserResp.DaichaoMarketingUser> getAll(Page<?> page, DaichaoMarketingUserReq daichaoMarketingUserReq);

查询报错找不到参数。mybatis映射出错。想了一下给对象参数决定加上@param注解,用 对象.属性 来映射 更改如下:

    @Select({""})
    @Results({
            @Result(property = "userId", column = "user_id"),
            @Result(property = "state", column = "user_id", javaType = List.class, many = @Many(select = "com.boutiquesf.service.admin.mapper.loan.AdDaichaoMarketingUserTagMapper.getTagByUserId"))
    })
    Page<DaichaoMarketingUserResp.DaichaoMarketingUser> getAll(Page<?> page, @Param("req") DaichaoMarketingUserReq daichaoMarketingUserReq);

然后就不报映射错误了,查询到了数据但是分页一直没有生效。
各种尝试后,判断应该是多数据源的原因。直接声明一个分页插件不行。于是修改多数据源配置,代码如下

    @Bean("adminSqlSessionFactory")
    @Primary
    public SqlSessionFactory adminSqlSessionFactory() throws Exception {
        MybatisSqlSessionFactoryBean factoryBean = new MybatisSqlSessionFactoryBean();
        factoryBean.setDataSource(adminDateSource);
        factoryBean.setConfigLocation(new ClassPathResource("mybatis-config.xml"));
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        factoryBean.setPlugins(interceptor);
        return factoryBean.getObject();
    }

生成多数据源的SqlSessionFactory时将分页插件注入进入就好了。
结果完美运行。

总结:使用myabtisPlus分页插件进行分页时,如果参数是实体对象,必须使用@param注解,使用对象.属性进行映射。如果是多数据源下分页插件失效的,需要在生成对应的SqlSessionFactory时使用setPlugins方法注入分页插件。

你可能感兴趣的:(java,开发语言)