摘要:一定義兩個數據源和生成數據源注解聲明為默認數據源創建配置事務管理二注意不同的數據源的類一定不能放在一個包下否則只掃描一個數據源即只會使用一個數據源里一個不會加載三配置文件使用數據源使用數據源四修改對應位置的代碼使用時可自動切換數據源
一.定義兩個數據源DataSource1Config 和DataSource2Config
package com.rainbow.test.config; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = "com.rainbow.test.mapper.test1", sqlSessionTemplateRef = "db1SqlSessionTemplate") public class DataSource1Config { /** * 生成數據源. @Primary 注解聲明為默認數據源 */ @Bean(name = "db1DataSource") @ConfigurationProperties(prefix = "spring.datasource.test") public DataSource testDataSource() { return DataSourceBuilder.create().build(); } /** * 創建 SqlSessionFactory */ @Bean(name = "db1SqlSessionFactory") public SqlSessionFactory testSqlSessionFactory(@Qualifier("db1DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/rainbow/test/mapper/test1/*.xml")); // bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mybatis/mapper/db1/*.xml")); return bean.getObject(); } /** * 配置事務管理 */ @Bean(name = "db1TransactionManager") public DataSourceTransactionManager testTransactionManager(@Qualifier("db1DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "db1SqlSessionTemplate") public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("db1SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
package com.rainbow.test.config; import org.apache.ibatis.session.SqlSessionFactory; import org.mybatis.spring.SqlSessionFactoryBean; import org.mybatis.spring.SqlSessionTemplate; import org.mybatis.spring.annotation.MapperScan; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import org.springframework.jdbc.datasource.DataSourceTransactionManager; import javax.sql.DataSource; @Configuration @MapperScan(basePackages = "com.rainbow.test.mapper.test2", sqlSessionTemplateRef = "db2SqlSessionTemplate") public class DataSource2Config { @Bean(name = "db2DataSource") @ConfigurationProperties(prefix = "spring.datasource.test1") @Primary public DataSource testDataSource() { return DataSourceBuilder.create().build(); } @Bean(name = "db2SqlSessionFactory") @Primary public SqlSessionFactory testSqlSessionFactory(@Qualifier("db2DataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:com/rainbow/test/mapper/test2/*.xml")); return bean.getObject(); } @Bean(name = "db2TransactionManager") @Primary public DataSourceTransactionManager testTransactionManager(@Qualifier("db2DataSource") DataSource dataSource) { return new DataSourceTransactionManager(dataSource); } @Bean(name = "db2SqlSessionTemplate") @Primary public SqlSessionTemplate testSqlSessionTemplate(@Qualifier("db2SqlSessionFactory") SqlSessionFactory sqlSessionFactory) throws Exception { return new SqlSessionTemplate(sqlSessionFactory); } }
二.注意不同的數據源的mapper類一定不能放在一個包下,否則@mapperscan只掃描一個數據源,即只會使用一個數據源,里一個不會加載
三.配置yml文件
spring: datasource: test: # 使用druid數據源 type: com.alibaba.druid.pool.DruidDataSource jdbc-url: jdbc:mysql://localhost:3306/test?serverTimezone=CTT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true username: root password: root driver-class-name: com.mysql.jdbc.Driver test1: # 使用druid數據源 type: com.alibaba.druid.pool.DruidDataSource jdbc-url: jdbc:oracle:thin:@172.16.182.18:1521:orcl username: policyprint password: sinosoft driver-class-name: oracle.jdbc.OracleDriver
四.修改對應位置的代碼,使用時可自動切換數據源
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74965.html
摘要:下面基于,帶著大家看一下中如何配置多數據源。注意版本不一致導致的一些小問題。配置配置兩個數據源數據庫和數據庫注意事項在配置數據源的過程中主要是寫成和。五啟動類此注解表示啟動類這樣基于的多數據源配置就已經完成了,兩個數據庫都可以被訪問了。 在上一篇文章《優雅整合 SpringBoot+Mybatis ,可能是你見過最詳細的一篇》中,帶著大家整合了 SpringBoot 和 Mybatis...
摘要:開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統一處理 開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...
摘要:接下來,本文將重點闡述在環境的多模塊構建過程。本項目傳送門一創建聚合父工程首先使用來快速創建好一個工程。然后在里面聲明該父工程包含的子模塊。 序言:比起傳統復雜的單體工程,使用Maven的多模塊配置,可以幫助項目劃分模塊,鼓勵重用,防止POM變得過于龐大,方便某個模塊的構建,而不用每次都構建整個項目,并且使得針對某個模塊的特殊控制更為方便。接下來,本文將重點闡述SpringBoot在M...
摘要:前言如題,今天解析下的配置文件。這時我們就可以用的屬性來配置隨機數,比如隨機字符串隨機隨機以內的隨機數的隨機數使用多配置文件很多時候我們開發項目都需要很多套環境,比如有測試環境,開發環境以及生產環境。原因是,是以的編碼方式讀取配置文件。 微信公眾號:一個優秀的廢人如有問題或建議,請后臺留言,我會盡力解決你的問題。 前言 如題,今天解析下 SpringBoot 的配置文件。 自定義屬性加...
閱讀 472·2023-04-25 17:26
閱讀 1495·2021-08-05 09:58
閱讀 1959·2019-08-30 13:17
閱讀 944·2019-08-28 17:52
閱讀 1061·2019-08-26 18:27
閱讀 1413·2019-08-26 14:05
閱讀 3608·2019-08-26 14:05
閱讀 1586·2019-08-26 10:45