新聞中心
數(shù)據(jù)庫廠商標(biāo)識(databaseIdProvider)
Mybatis 可以根據(jù)不同的數(shù)據(jù)庫廠商執(zhí)行不同的語句,這種多廠商的支持是基于映射語句中的 ?databaseId屬性。 MyBatis 會加載帶有匹配當(dāng)前數(shù)據(jù)庫 ?databaseId屬性和所有不帶 ?databaseId ?屬性的語句。 如果同時找到帶有 ?databaseId ?和不帶 ?databaseId ?的相同語句,則后者會被舍棄。 為支持多廠商特性,只要像下面這樣在 mybatis-config.xml 文件中加入 ?databaseIdProvider ?即可:

?databaseIdProvider ?對應(yīng)的 ?DB_VENDOR ?實現(xiàn)會將 ?databaseId ?設(shè)置為 ?DatabaseMetaData#getDatabaseProductName()? 返回的字符串。 由于通常情況下這些字符串都非常長,而且相同產(chǎn)品的不同版本會返回不同的值,你可能想通過設(shè)置屬性別名來使其變短:
在提供了屬性別名時,?databaseIdProvider ?的 ?DB_VENDOR ?實現(xiàn)會將 ?databaseId ?設(shè)置為數(shù)據(jù)庫產(chǎn)品名與屬性中的名稱第一個相匹配的值,如果沒有匹配的屬性,將會設(shè)置為 “?null?”。 在這個例子中,如果 ?getDatabaseProductName()? 返回“?Oracle (DataDirect)?”,?databaseId將被設(shè)置為“?oracle?”。
你可以通過實現(xiàn)接口 ?org.apache.ibatis.mapping.DatabaseIdProvider? 并在 ?mybatis-config.xml? 中注冊來構(gòu)建自己的 ?DatabaseIdProvider?:
public interface DatabaseIdProvider {
default void setProperties(Properties p) { // 從 3.5.2 開始,該方法為默認(rèn)方法
// 空實現(xiàn)
}
String getDatabaseId(DataSource dataSource) throws SQLException;
} 網(wǎng)頁名稱:創(chuàng)新互聯(lián)MyBatis教程:MyBatis3XML配置-數(shù)據(jù)庫廠商標(biāo)識
URL網(wǎng)址:http://www.5511xx.com/article/coeieps.html


咨詢
建站咨詢
