08、Mybatis进阶:全局配置文件_databaseIdProvider_多数据库支持

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

在mybatis配置文件中进行如下配置

	<!-- 5、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>

在映射文件中进行如下配置

下面三条语句中两条设置了databaseId值,一条并未设置值。而databaseId的值与上面property配置的value值要一样。

<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee">
		select * from tbl_employee where id = #{id}
	</select>
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="mysql">
		select * from tbl_employee where id = #{id}
	</select>
	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="oracle">
		select EMPLOYEE_ID id,LAST_NAME	lastName,EMAIL email 
		from employees where EMPLOYEE_ID=#{id}
	</select>

说明:

databaseId值为mysql表示:当数据库连接为mysql数据库时,该语句才会被执行,如果此时项目使用的是orcle数据则该条语句不会被执行。
没有设置databaseId表示:无论当前连接的什么数据库,该条语句都能被使用。但是如上面这种情况,如果使用的mysql数据库则databaseId=mysql且id为getEmpById的语句可以执行,而同时id也是getEmpById且没指定的databaseId的语句也可以被执行。这时系统将执行指定更加精确的databaseId=mysql且id为getEmpById的语句

版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: