本次文檔以oracle數據庫配置爲案例,在Springboot項目中,使用alibaba完成多數據源配置。先附上目錄結構。
配置多數據源有兩種,一種是通過命名規則來自動選擇數據庫連接池。另一種是制定固定目錄下的文件是使用哪個連接池。本人傾向於第二種,這樣要更換連接池的時候只需要移動文件目錄即可。而且也不用在mapper文件限制了程序員的命名。
在這次案例中,我指定mapper下每個文件夾就是一個連接池,hczz是一個連接池,jq是一個連接池。
一、配置文件添加相關配置
相關參數如果不明白意思,可以百度一下,敲打過程中沒有代碼提示也不用緊張。
在這裏,以防配置錯誤,貼上代碼。
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: oracle.jdbc.OracleDriver druid: hczz: url: username: password: initial-size: 5 max-active: 5 min-idle: 5 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 validation-query: SELECT 1 FROM DUAL test-while-idle: true test-on-borrow: false time-between-eviction-runs-millis: 300000 soft-min-evictable-idle-time-millis: 600000 |
備註:
1.hczz即是第一個數據庫,也是主數據庫,可自己定義名字
2.以下兩句必須要配置,不然8小時後,或者更短,系統將會因爲數據庫沒有正常關閉而引起宕機
time-between-eviction-runs-millis: 300000
soft-min-evictable-idle-time-millis: 600000
二、配置數據源
備註:配置數據源要至少要配置一個主數據源,副數據源可多個
2.1配置主數據庫連接池
注意細節!注意細節!
@Configuration @MapperScan(basePackages = "com.ccf.mapper.hczz",sqlSessionTemplateRef = "hczzSqlSessionTemplate") public class HczzDataSourceConfig {
@Bean("hczz") @Primary @ConfigurationProperties(prefix = "spring.dataSource.druid.hczz") public DataSource hczzDataSource(){ System.out.println("hczz DataSource"); return DataSourceBuilder.create().build(); }
@Bean("hczzSqlSessionFactory") @Primary public SqlSessionFactory sqlSessionFactory(@Qualifier("hczz") DataSource dataSource)throws Exception{ SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/hczz/*.xml")); bean.setConfigLocation(new ClassPathResource("mybatis-config.xml")); return bean.getObject(); }
@Bean("hczzTransactionManager") @Primary public DataSourceTransactionManager transactionManager(@Qualifier("hczz") DataSource dataSource) throws Exception{ return new DataSourceTransactionManager(dataSource); }
@Bean("hczzSqlSessionTemplate") @Primary public SqlSessionTemplate sqlSessionTemplate(@Qualifier("hczzSqlSessionFactory") SqlSessionFactory sqlSessionFactory)throws Exception{ return new SqlSessionTemplate(sqlSessionFactory); } } |
2.2配置副連接池
配置多副連接池有的是使用通配的方式注入,這樣就不用寫太多的配置文件,但由於本人在配置的過程中遇到一些問題,而且如果是有mysql連接池,也有oracle連接池,這樣要指定不同的配置文件會比較麻煩。項目需要也不會一次性太多連接池,太多連接池那還不如開多個項目實現業務分離。
配置文件的配置跟主數據源配置一樣。這裏省略。
跟主數據庫相比,少了@Primary註解。
寫得比較粗糙,有寫得錯誤的或者有更好方法,歡迎評論、聯繫交流。
代碼在https://download.csdn.net/download/linbyte/10874327 僅作爲學習交流用途,禁止用於任何商業用途。
聯繫QQ:694335719
微信:lin69335719(請標明添加好友原因)