mybatis使用databaseIdProvider多数据库支持
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>

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

3、为不同的数据库厂商起别名。
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>

4、在mapper.xml文件中可以通过标签databaseId定义使用的数据库。
<select id="getEmpById" resultType="employee" databaseId="mysql">
select *
from tbl_emp where emp_id = #{empId}
</select>

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>

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