任務(wù)描述:
任務(wù)要求,SpringBoot項(xiàng)目為適應(yīng)多種產(chǎn)品要求,需要服務(wù)同時(shí)支持oracle和mysql數(shù)據(jù)庫(kù),通過(guò)簡(jiǎn)單配置切換數(shù)據(jù)源
一、Maven配置
添加oracle和mysql驅(qū)動(dòng)
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
二、application.yml配置
yml配置
# type配置不同數(shù)據(jù)源類型,比如oracle,mysql
database:
type: mysql
configure:
#**配置文件基礎(chǔ)路徑,遵循spring資源加載語(yǔ)法。
#如果是獨(dú)立于程序包外部的磁盤路徑,需要增加前綴“file:",示例:file:/home/mybatis/db/
#如果是開(kāi)發(fā)環(huán)境且配置文件在類路徑下,則配置:classpath:
baseDir: 'file:../common-config'
#**數(shù)據(jù)庫(kù)配置文件路徑
dbConfigPath: ${configure.baseDir}/db/${database.type}/database-Config.yml
三、數(shù)據(jù)庫(kù)配置

image.png
database-Config.yml配置
db:
rsa:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
user: root
pwd: root
initialSize: 1
minIdle: 5
maxActive: 10
四、數(shù)據(jù)源配置
<beans profile="evn_pro">
<bean id="dataSource" parent="abstractDatasource">
<property name="name" value="rsa" />
<!-- 基本屬性 url、user、password -->
<property name="driverClassName" value="${db.rsa.driver}" />
<property name="url" value="${db.rsa.url}" />
<property name="username" value="${db.rsa.user}" />
<property name="password" value="${db.rsa.pwd}" />
<!-- 配置初始化大小、最小、最大 -->
<property name="initialSize" value="${db.rsa.initialSize}" />
<property name="minIdle" value="${db.rsa.minIdle}" />
<property name="maxActive" value="${db.rsa.maxActive}" />
<!-- 配置獲取連接等待超時(shí)的時(shí)間,單位毫秒 -->
<property name="maxWait" value="#{10 * 1000}" />
</bean>
</beans>
五、mybatis配置和映射文件
mybatis-config.xml 配置 databaseIdProvider
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle" />
<property name="MySQL" value="mysql" />
</databaseIdProvider>
通過(guò)databaseId指定不同數(shù)據(jù)源
select id="queryUserInfo" resultType="map" databaseId="mysql">
select userId,name from user_info
</select>
<select id="queryUserInfo" resultType="map" databaseId="oracle">
select userId,name from user_info
</select>
總結(jié)
SpringBoot+Mybatis本身對(duì)多數(shù)據(jù)源有很好的支持,通過(guò)增加數(shù)據(jù)源配置,區(qū)分加載不同數(shù)據(jù)源資源文件,然后通過(guò)mybatis映射文件對(duì)不同數(shù)據(jù)源的支持,實(shí)現(xiàn)通過(guò)簡(jiǎn)單配置,切換不同的數(shù)據(jù)源。