Mybatis配置-属性(properties)
2023-12-15 12:19:29
这些是可外部化、可替换的属性,可以在典型的Java Properties文件实例中进行配置,或者通过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>
?在这个例子中,用户名和密码将被 properties 元素中设置的值替换。驱动程序和url属性将被包含在config.properties文件中的值所替换。这为配置提供了很多选项。
属性也可以传递到 ?SqlSessionFactoryBuilder.build()
?方法中。例如:?
SqlSessionFactory factory =
sqlSessionFactoryBuilder.build(reader, props);
// ... or ...
SqlSessionFactory factory =
new SqlSessionFactoryBuilder.build(reader, environment, props);
如果一个属性同时存在于这些地方,MyBatis会按照以下顺序加载它们:
- 首先读取在properties元素体内指定的属性;
- ?其次读取从properties元素的classpath资源或url属性加载的属性,并覆盖已经指定的重复属性;
- 最后读取作为方法参数传递的属性,并覆盖可能从properties体和资源/URL属性加载的重复属性。
因此,最高优先级的属性是作为方法参数传递的属性,其次是资源/URL属性,最后是在properties元素体内指定的属性。?
自MyBatis 3.4.2版本开始,您可以像下面这样在占位符中指定默认值:?
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${username:ut_user}"/> <!-- If 'username' property not present, username become 'ut_user' -->
</dataSource>
?该功能默认是禁用的。如果您在占位符中指定了默认值,您需要通过添加特殊的属性来启用此功能,方法如下:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> <!-- Enable this feature -->
</properties>
?这将与属性键中的冒号字符(例如:db:username)或OGNL表达式中的三元运算符(例如:${tableName != null ? tableName : 'global_constants'})产生冲突。如果您使用其中任何一个并且需要默认属性值,则必须通过添加以下特殊属性来更改默认值分隔符:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> <!-- Change default value of separator -->
</properties>
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${db:username?:ut_user}"/>
</dataSource>
文章来源:https://blog.csdn.net/hay23455/article/details/135011365
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!