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"来定义默认使用的数据库是哪一个。