教程 > mybatis 中文教程 > 阅读:95

mybatis 数据库标识(databaseidprovider)——迹忆客-ag捕鱼王app官网

mybatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseid 属性。 mybatis 会加载带有匹配当前数据库 databaseid 属性和所有不带 databaseid 属性的语句。 如果同时找到带有 databaseid 和不带 databaseid 的相同语句,则后者会被舍弃。 为支持多厂商特性,只要像下面这样在 mybatis-config.xml 文件中加入 databaseidprovider 即可:


databaseidprovider 对应的 db_vendor 实现会将 databaseid 设置为 databasemetadata#getdatabaseproductname() 返回的字符串。 由于通常情况下这些字符串都非常长,而且相同产品的不同版本会返回不同的值,你可能想通过设置属性别名来使其变短:


  
  
  

在提供了属性别名时,databaseidprovider 的 db_vendor 实现会将 databaseid 设置为数据库产品名与属性中的名称第一个相匹配的值,如果没有匹配的属性,将会设置为 “null”。 在这个例子中,如果 getdatabaseproductname() 返回“oracle (datadirect)”,databaseid 将被设置为“oracle”。

你可以通过实现接口 org.apache.ibatis.mapping.databaseidprovider 并在 mybatis-config.xml 中注册来构建自己的 databaseidprovider:

public interface databaseidprovider {
  default void setproperties(properties p) { // 从 3.5.2 开始,该方法为默认方法
    // 空实现
  }
  string getdatabaseid(datasource datasource) throws sqlexception;
}

查看笔记

扫码一下
查看教程更方便
网站地图