mybatis使用databaseIdProvider多数据库支持

2025-11-16 00:37:01

1、mybatis使用databaseIdProvider可以根据不同的数据库执行不同的sql语句。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE configuration

  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"

  "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

        <properties resource="dbconfig.properties">

                

        </properties>

        

  <settings>

        <setting name="mapUnderscoreToCamelCase" value="true"/>

  </settings>

  

  <typeAliases>

        <package name="com.gwolf.bean"/>

  </typeAliases>

  <environments default="mysql">

    <environment id="mysql">

      <transactionManager type="JDBC"/>

      

      <dataSource type="POOLED">

        <property name="driver" value="${jdbc.driverClass}"/>

        <property name="url" value="${jdbc.jdbcUrl}"/>

        <property name="username" value="${jdbc.user}"/>

        <property name="password" value="${jdbc.password}"/>

      </dataSource>

      

    </environment>

    

    <environment id="oracle">

      <transactionManager type="JDBC"/>

      

      <dataSource type="POOLED">

        <property name="driver" value="${oracle.jdbc.driverClass}"/>

        <property name="url" value="${oracle.jdbc.jdbcUrl}"/>

        <property name="username" value="${oracle.jdbc.user}"/>

        <property name="password" value="${oracle.jdbc.password}"/>

      </dataSource>

      

    </environment>

  </environments>

  

  <databaseIdProvider type="DB_VENDOR">

        <property name="MySQL" value="mysql"/>

        <property name="Oracle" value="oracle"/>

  </databaseIdProvider>

  

  <mappers>

    <mapper resource="EmployeeMapper.xml"/>

  </mappers>

  

</configuration>

mybatis使用databaseIdProvider多数据库支持

2、定义数据库别名DB_VENDOR。它的作用就是得到数据库厂商的标识,这个标识由数据库驱动自带的。mybatis就能根据数据库厂商标识来执行不同的sql。

<databaseIdProvider type="DB_VENDOR">

 

  </databaseIdProvider>

mybatis使用databaseIdProvider多数据库支持

3、为不同的数据库厂商起别名。

 <databaseIdProvider type="DB_VENDOR">

        <property name="MySQL" value="mysql"/>

        <property name="Oracle" value="oracle"/>

  </databaseIdProvider>

mybatis使用databaseIdProvider多数据库支持

4、在mapper.xml文件中可以通过标签databaseId定义使用的数据库。

<select id="getEmpById" resultType="employee" databaseId="mysql">

    select *

          from tbl_emp where emp_id = #{empId}

  </select>

mybatis使用databaseIdProvider多数据库支持

5、在mybatis-config.xml中配置两个数据库环境:

<environments default="mysql">

    <environment id="mysql">

      <transactionManager type="JDBC"/>

      

      <dataSource type="POOLED">

        <property name="driver" value="${jdbc.driverClass}"/>

        <property name="url" value="${jdbc.jdbcUrl}"/>

        <property name="username" value="${jdbc.user}"/>

        <property name="password" value="${jdbc.password}"/>

      </dataSource>

      

    </environment>

    

    <environment id="oracle">

      <transactionManager type="JDBC"/>

      

      <dataSource type="POOLED">

        <property name="driver" value="${oracle.jdbc.driverClass}"/>

        <property name="url" value="${oracle.jdbc.jdbcUrl}"/>

        <property name="username" value="${oracle.jdbc.user}"/>

        <property name="password" value="${oracle.jdbc.password}"/>

      </dataSource>

      

    </environment>

  </environments>

mybatis使用databaseIdProvider多数据库支持

6、我们通过标签environments default="mysql"来定义默认使用的数据库是哪一个。

mybatis使用databaseIdProvider多数据库支持

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢