美文网首页
SpringBoot+Mybatis动态支持oracle和mys

SpringBoot+Mybatis动态支持oracle和mys

作者: AioT_QJ | 来源:发表于2019-07-16 09:13 被阅读0次

任务描述:

任务要求,SpringBoot项目为适应多种产品要求,需要服务同时支持oracle和mysql数据库,通过简单配置切换数据源

一、Maven配置

添加oracle和mysql驱动

 <dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc8</artifactId>
 </dependency>
 <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

二、application.yml配置

yml配置

# type配置不同数据源类型,比如oracle,mysql
database:
  type: mysql  
configure:
  #**配置文件基础路径,遵循spring资源加载语法。
  #如果是独立于程序包外部的磁盘路径,需要增加前缀“file:",示例:file:/home/mybatis/db/
  #如果是开发环境且配置文件在类路径下,则配置:classpath:
  baseDir: 'file:../common-config'
  #**数据库配置文件路径
  dbConfigPath: ${configure.baseDir}/db/${database.type}/database-Config.yml

三、数据库配置

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

四、数据源配置

<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}" />
            <!-- 配置获取连接等待超时的时间,单位毫秒 -->
            <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>

通过databaseId指定不同数据源

 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>

总结

SpringBoot+Mybatis本身对多数据源有很好的支持,通过增加数据源配置,区分加载不同数据源资源文件,然后通过mybatis映射文件对不同数据源的支持,实现通过简单配置,切换不同的数据源。

相关文章

网友评论

      本文标题:SpringBoot+Mybatis动态支持oracle和mys

      本文链接:https://www.haomeiwen.com/subject/khoakctx.html