欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 语旬 然后对它进行配置。

相关标签: SSM学习