SSM-Mybatis-配置-databaseIdProvider
程序员文章站
2022-04-22 07:59:48
...
SSM-Mybatis-配置-databaseIdProvider
databaseldProvider元素主要是支持多种不同厂商的数据库。
### 使用默认的databaseldProvider(*)
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle"/>
</databaseIdProvider>
property 元素的属性 name 是数据库的名称,属性 value 是它的 个别名,在 MyBatis 里可以通过这个别名标识 一条SQL 适用于哪种数据库运行。
然后通过该着映射器的SQL:
<select id= ” getRole ” parameterType=”long” resultType=”role” databaseId=”oracle” >
select id, role_name as roleName, note from t_role where id = # {id}
</select>
<select id= ” getRole ” parameterType=”long” resultType=”role” databaseId=”mysql” >
select id, role_name as roleName, note from t_role where 1=1 and id=#{id}
</select>
databaseldProvide町归 属性被配置时,系统会优先取到和数据库配置一致的 SQL 如果没有,则取没有 databaseId SQL 可以把它当作默认值。如果还是取不到, 会抛 出异常,说明无法匹配到对应的 SQL
不使用系统规则
实现Mybatis提供的接口DatabaseldProvider:
public interface DatabaseIdProvider {
default void setProperties(Properties p) { // 从 3.5.2 开始,该方法为默认方法
// 空实现
}
String getDatabaseId(DataSource dataSource) throws SQLException;
}
setProperties方法可 读取配置的参数;而getDatabaseId方法则是需要 完成的逻辑, 如判断是 MySQL 数据库,则返回 MySQL ,那么系统就会拿这个返回值去 匹配配置了 databaseld 的SQL 语旬 然后对它进行配置。