天天看点

异常:MP添加多数据源动态表名导致分页失效

在分页时动态表名失效,修改插件注册顺序即可解决

参考修改:

/**
 * @author TXF
 * @version 1.0
 * @description: TODO
 * @date 2021/8/11 16:46
 */
@Configuration
public class MybatisPlusConfig {

    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //支持动态表单
        DynamicTableNameInnerInterceptor dynamicTableNameInnerInterceptor = new DynamicTableNameInnerInterceptor();
        HashMap<String, TableNameHandler> map = new HashMap<String, TableNameHandler>(2) {{
            put("DynamicArcFile", (sql, tableName) -> myTableName.get());
        }};
        dynamicTableNameInnerInterceptor.setTableNameHandlerMap(map);
        //如自果是不同类型的库,请不要指定DbType,其会动判断。
//        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        interceptor.addInnerInterceptor(dynamicTableNameInnerInterceptor);
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.DM));
        return interceptor;
    }
    @Bean
    public ConfigurationCustomizer configurationCustomizer() {
        return configuration -> configuration.setUseDeprecatedExecutor(false);
    }
    public static ThreadLocal<String> myTableName = new ThreadLocal<>();
}
           

继续阅读