这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在properties
元素的子元素中设置。例如:
<properties resource="org/mybatis/example/config.properties">
<property name="username" value="dev_user"/>
<property name="password" value="F2Fa3!33TYyg"/>
</properties>
设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。比如:
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
这个例子中的 username
和 password
将会由 properties
元素中设置的相应值来替换。 driver
和 url
属性将会由 config.properties
文件中对应的值来替换。这样就为配置提供了诸多灵活选择。
也可以在 SqlSessionFactoryBuilder.build()
方法中传入属性值。例如:
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
// ... 或者 ...
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
properties
元素体内指定的属性。
properties
元素中的resource
属性读取类路径下属性文件,或根据 url
属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url
属性中指定的配置文件次之,最低优先级的则是 properties
元素中指定的属性。
从 MyBatis 3.4.2 开始,你可以为占位符指定一个默认值。例如:
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${username:ut_user}"/> <!-- 如果属性 "username" 没有被配置,"username" 属性的值将为 "ut_user" -->
</dataSource>
这个特性默认是关闭的。要启用这个特性,需要添加一个特定的属性来开启这个特性。例如:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> <!-- 启用默认值特性 -->
</properties>
如果你在属性名中使用了 ":"
字符(如:db:username
),或者在 SQL 映射中使用了 OGNL
表达式的三元运算符(如: ${tableName != null ? tableName : "global_constants"}
),就需要设置特定的属性来修改分隔属性名和默认值的字符。例如:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> <!-- 修改默认值的分隔符 -->
</properties>
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${db:username?:ut_user}"/>
</dataSource>
Spring教程 -Spring表达式语言使用数据库属性文件...bean.property_name在下面的代码中,我们从“addressBean"注入了“country"...
Spring JSR-250 注释Spring还使用基于 JSR-250 注释,它包括 @PostConstruct, @PreDestroy 和 @Resource 注释。因为你已经有了...
c:param 标签 c:param标签用于在c:url标签中指定参数,而且与URL编码相关。在c:param标签内,name属性表明参数的名称,value属性...
fmt:setLocale 标签 fmt:setLocale标签用来将给定的区域存储在locale配置变量中。语法格式fmt:setLocale value=string variant=s...
fn:length()函数 fn:length()函数返回字符串长度或集合中元素的数量。语法 fn:length()函数的语法如下:${fn:length(collection ...
Servlet容器主要是JavaWeb应用提供运行时环境,所以也可以称之为JavaWeb应用容器,或者Servlet/JSP容器。Servlet容器主要负责管...
编写过滤器Servlet 过滤器是Java 类,可用于 Servlet 编程中的下述目的:在它们访问后端资源之前,拦截这些来自客户端的请求。在...
Swift教程 -Swift范围操作符您可以使用范围运算符来指定整数范围,例如1到10。有两种类型的范围运算符:闭合范围运算符 ... 和半...