@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那種執行緒中切換使用)
uj5u.com熱心網友回復:
配置多資料源不香么?uj5u.com熱心網友回復:
多資料源,對應的物體也要有兩套,有些時候,如果一套物體和倉儲,要隨時切換資料源,就不夠靈活了。
可以參考這種寫法:
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(ConfigReader.getConfig("spring.datasource.driver-class-name"));
dataSource.setUrl(ConfigReader.getConfig("spring.datasource.url"));
dataSource.setUsername(ConfigReader.getConfig("spring.datasource.username"));
dataSource.setPassword(ConfigReader.getConfig("spring.datasource.password"));
//創建JdbcTemplate物件,設定資料源
JdbcTemplate template = new JdbcTemplate(dataSource);
// String sql = "select * from users";
List<String[]> arr = template.query(sql, new MyRowMapper());
uj5u.com熱心網友回復:
想實作那種有配置資料源資訊的 頁面 配置好后直接整個專案 就用配置的資料源了 ,之前用哪個 aop+注解 弄的 切換是 當前執行緒中使用uj5u.com熱心網友回復:
我通過那個 修改mybatis 資料源給換掉可以實作整個切換資料源轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/24193.html
標籤:Web 開發
