MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId
属性。 MyBatis 会加载带有匹配当前数据库 databaseId
属性和所有不带 databaseId
属性的语句。 如果同时找到带有 databaseId
和不带 databaseId
的相同语句,则后者会被舍弃。 为支持多厂商特性,只要像下面这样在 mybatis-config.xml 文件中加入 databaseIdProvider
即可:
<databaseIdProvider type="DB_VENDOR" />
databaseIdProvider
对应的 DB_VENDOR
实现会将 databaseId
设置为 DatabaseMetaData#getDatabaseProductName()
返回的字符串。 由于通常情况下这些字符串都非常长,而且相同产品的不同版本会返回不同的值,你可能想通过设置属性别名来使其变短:
<databaseIdProvider type="DB_VENDOR">
<property name="SQL Server" value="sqlserver"/>
<property name="DB2" value="db2"/>
<property name="Oracle" value="oracle" />
</databaseIdProvider>
在提供了属性别名时,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;
}
Spring教程 - 弹簧集属性我们可以将值或值列表填充到Spring xml配置文件中定义的Java bean。我们可以将值或值列表填充到Spring x...
x:forEach 标签 x:forEach标签用来循环遍历XML文档的节点。 语法格式x:forEach var=string select=string begin=int end=int ste...
fn:trim()函数 fn:trim()函数将字符串两端的空白符移除。语法 fn:trim()函数的语法如下:${fn.trim(string)...
语法和语义这一章节将 Rust 的知识划分成小块,每一块描述一个概念。如果你想从下至上的学习 Rust,按照顺序阅读本教程是个比较...
因为MicrosoftOffice办公软件被广泛应用,以及该软件版本的不断提升,功能不断完善,所以在Office办公软件平台上开发出的VBA应用...
ASP.NET TextBox 控件 Web 服务器控件定义和用法 TextBox 控件用于创建用户可输入文本的文本框。属性 属性 描述 .NET AutoComple...
ASP.NET Button OnClientClick 属性 Button 控件定义和用法 OnClientClick 属性用于设置当 Button 控件被点击时运行一段客户端脚...
ASP.NET Image ImageUrl 属性 Image 控件定义和用法 ImageUrl 属性用于设置或返回要显示的图像的 URL。 语法asp:Image ImageUrl=...
指令ASP.NET 指令是指定可选设置的说明,如注册一个自定义的控制和页面的语言。这些设置介绍了 NET Framework 如何处理单页表单(...