spring boot 动态数据源嵌套使用数据源切换报错的问题

spring boot 动态数据源嵌套使用数据源切换报错的问题

看代码:

    @Override
    @DataSource(name = DSEnum.DATA_SOURCE_BASE)  //base
    public void ruleTest() {

        List userList = sysUserService.findAll();  //使用core
        userList.forEach(System.out::println);

//        DataSourceContextHolder.setDataSourceType(DSEnum.DATA_SOURCE_BASE);
        List ruleServiceAll = this.findAll();  //base
        ruleServiceAll.forEach(System.out::println);
//        //数据源已经从新设置
        Rule rule = this.selectById(1);  //core
        System.out.println(rule);

    }

数据源嵌套使用,动态切换依赖于ThreadLocal,调用一个方法切换一个数据源 (@DataSource 注解)进入方法使用的是base,第一次操作数据库使用 core 方法执行完,销毁数据源 数据源再次使用默认的core,第二次从base库里面查,使用的确是core 数据源,所以报错,

结局方法

DataSourceContextHolder.setDataSourceType(DSEnum.DATA_SOURCE_BASE);
第一次查询之后,加上这一句代码,改变本地内存变量中的值

你可能感兴趣的:(mybatis,mybatisPlus)