摘要:一定義兩個(gè)數(shù)據(jù)源和生成數(shù)據(jù)源注解聲明為默認(rèn)數(shù)據(jù)源創(chuàng)建配置事務(wù)管理二注意不同的數(shù)據(jù)源的類一定不能放在一個(gè)包下否則只掃描一個(gè)數(shù)據(jù)源即只會(huì)使用一個(gè)數(shù)據(jù)源里一個(gè)不會(huì)加載三配置文件使用數(shù)據(jù)源使用數(shù)據(jù)源四修改對(duì)應(yīng)位置的代碼使用時(shí)可自動(dòng)切換數(shù)據(jù)源
一.定義兩個(gè)數(shù)據(jù)源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 { /** * 生成數(shù)據(jù)源. @Primary 注解聲明為默認(rèn)數(shù)據(jù)源 */ @Bean(name = "db1DataSource") @ConfigurationProperties(prefix = "spring.datasource.test") public DataSource testDataSource() { return DataSourceBuilder.create().build(); } /** * 創(chuàng)建 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(); } /** * 配置事務(wù)管理 */ @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); } }
二.注意不同的數(shù)據(jù)源的mapper類一定不能放在一個(gè)包下,否則@mapperscan只掃描一個(gè)數(shù)據(jù)源,即只會(huì)使用一個(gè)數(shù)據(jù)源,里一個(gè)不會(huì)加載
三.配置yml文件
spring: datasource: test: # 使用druid數(shù)據(jù)源 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數(shù)據(jù)源 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
四.修改對(duì)應(yīng)位置的代碼,使用時(shí)可自動(dòng)切換數(shù)據(jù)源
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/74965.html
摘要:下面基于,帶著大家看一下中如何配置多數(shù)據(jù)源。注意版本不一致導(dǎo)致的一些小問(wèn)題。配置配置兩個(gè)數(shù)據(jù)源數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)注意事項(xiàng)在配置數(shù)據(jù)源的過(guò)程中主要是寫(xiě)成和。五啟動(dòng)類此注解表示啟動(dòng)類這樣基于的多數(shù)據(jù)源配置就已經(jīng)完成了,兩個(gè)數(shù)據(jù)庫(kù)都可以被訪問(wèn)了。 在上一篇文章《優(yōu)雅整合 SpringBoot+Mybatis ,可能是你見(jiàn)過(guò)最詳細(xì)的一篇》中,帶著大家整合了 SpringBoot 和 Mybatis...
摘要:開(kāi)公眾號(hào)差不多兩年了,有不少原創(chuàng)教程,當(dāng)原創(chuàng)越來(lái)越多時(shí),大家搜索起來(lái)就很不方便,因此做了一個(gè)索引幫助大家快速找到需要的文章系列處理登錄請(qǐng)求前后端分離一使用完美處理權(quán)限問(wèn)題前后端分離二使用完美處理權(quán)限問(wèn)題前后端分離三中密碼加鹽與中異常統(tǒng)一處理 開(kāi)公眾號(hào)差不多兩年了,有不少原創(chuàng)教程,當(dāng)原創(chuàng)越來(lái)越多時(shí),大家搜索起來(lái)就很不方便,因此做了一個(gè)索引幫助大家快速找到需要的文章! Spring Boo...
摘要:接下來(lái),本文將重點(diǎn)闡述在環(huán)境的多模塊構(gòu)建過(guò)程。本項(xiàng)目傳送門(mén)一創(chuàng)建聚合父工程首先使用來(lái)快速創(chuàng)建好一個(gè)工程。然后在里面聲明該父工程包含的子模塊。 序言:比起傳統(tǒng)復(fù)雜的單體工程,使用Maven的多模塊配置,可以幫助項(xiàng)目劃分模塊,鼓勵(lì)重用,防止POM變得過(guò)于龐大,方便某個(gè)模塊的構(gòu)建,而不用每次都構(gòu)建整個(gè)項(xiàng)目,并且使得針對(duì)某個(gè)模塊的特殊控制更為方便。接下來(lái),本文將重點(diǎn)闡述SpringBoot在M...
摘要:前言如題,今天解析下的配置文件。這時(shí)我們就可以用的屬性來(lái)配置隨機(jī)數(shù),比如隨機(jī)字符串隨機(jī)隨機(jī)以內(nèi)的隨機(jī)數(shù)的隨機(jī)數(shù)使用多配置文件很多時(shí)候我們開(kāi)發(fā)項(xiàng)目都需要很多套環(huán)境,比如有測(cè)試環(huán)境,開(kāi)發(fā)環(huán)境以及生產(chǎn)環(huán)境。原因是,是以的編碼方式讀取配置文件。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 如題,今天解析下 SpringBoot 的配置文件。 自定義屬性加...
閱讀 560·2023-04-25 17:26
閱讀 1561·2021-08-05 09:58
閱讀 2020·2019-08-30 13:17
閱讀 1015·2019-08-28 17:52
閱讀 1127·2019-08-26 18:27
閱讀 1468·2019-08-26 14:05
閱讀 3683·2019-08-26 14:05
閱讀 1684·2019-08-26 10:45