青衣画白扇 2020-08-10 10:03 采纳率: 25%
浏览 343
已采纳

springboot +mybatisplus 中如何更换默认的数据源(不是aop的那种线程切换)

@Bean
    public SqlSessionFactory sqlSessionFactory() throws Exception {
     MybatisSqlSessionFactoryBean sqlSessionFactoryBean = new MybatisSqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dynamicDataSource());
        sqlSessionFactoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/jksd/mapper/*.xml"));
        sqlSessionFactoryBean.setTypeAliasesPackage("com.jksd.model");
      //导入mybatis配置
        MybatisConfiguration configuration = new MybatisConfiguration();
        configuration.setJdbcTypeForNull(JdbcType.NULL);
        configuration.setMapUnderscoreToCamelCase(true);
        configuration.setCacheEnabled(false);
        sqlSessionFactoryBean.setConfiguration(configuration);
        //PerformanceInterceptor(),OptimisticLockerInterceptor()
        //导入全局配置
        //解决驼峰命名失效
       // sqlSessionFactoryBean.setConfiguration(configuration());
        return sqlSessionFactoryBean.getObject();
    } 
//修改MyBatis的数据源
            MybatisSqlSessionFactoryBean SqlSessionFactory = (MybatisSqlSessionFactoryBean) SpringContextUtils.getBean(MybatisSqlSessionFactoryBean.class);
          Environment environment =SqlSessionFactory.getObject().getConfiguration().getEnvironment();
          Field dataSourceField = environment.getClass().getDeclaredField("dataSource");
          dataSourceField.setAccessible(true);//跳过检查
          dataSourceField.set(environment,datasourceId);//修改mybatis的数据源

报错
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean' available

有没有大佬用过啊 (想实现的就是 切换数据源后所有 关于数据库的操作都是切换过去的不是 aop那种线程中切换使用)

  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-08-10 14:44
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 2月22日

悬赏问题

  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测