mybatis全局配置文件-(5)-databaseIdProvider 多数据库支持

MyBatis 可以根据不同的数据库厂商执行不同的语句。

【如果在全局配置文件中,没有配置databaseIdProvider,而在sql映射文件中,只定义了一条目标sql语句且该sql语句配置了databaseId=”mysql”,那么该sql语句是不会执行的】

在全局配置文件中:编辑 databaseIdProvider

<!-- databaseIdProvider:支持多数据库厂商的;
	 type="DB_VENDOR":VendorDatabaseIdProvider
	 作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;
		MySQL,Oracle,SQL Server,xxxx
 -->
	<databaseIdProvider type="DB_VENDOR">
		<!-- 为不同的数据库厂商起别名 -->
		<property name="MySQL" value="mysql"/>
		<property name="Oracle" value="oracle"/>
		<property name="SQL Server" value="sqlserver"/>
	</databaseIdProvider>

然后在对象映射文件中:sql语句中添加 databaseId

默认有一个 没有添加 databaseId 的sql语句,然后是 各厂家的sql语句,调用sql语句时,选择 最匹配的sql语句 调用。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mybatis.mapper.EmployeeMapper">
<!-- 
namespace:名称空间;指定为接口的全类名
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值

public Employee getEmpById(Integer id);
 -->
 	<select id="getEmpById" resultType="com.mybatis.bean.Employee">
		select * from tbl_employee where id = #{id}
	</select>
	<select id="getEmpById" resultType="com.mybatis.bean.Employee"
		databaseId="mysql">
		select * from tbl_employee where id = #{id}
	</select>
	<select id="getEmpById" resultType="com.mybatis.bean.Employee"
		databaseId="oracle">
		select EMPLOYEE_ID id,LAST_NAME	lastName,EMAIL email 
		from employees where EMPLOYEE_ID=#{id}
	</select>
</mapper>

 

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments