SpringBoot+Mybatis動(dòng)態(tài)支持oracle和mysql

任務(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ù)源。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容