MyBatis3文档阅读(二)之Property的加载顺序

这里写图片描述

mybatis的官方文档已经给出了property加载顺序的说明,我来简单的验证一下:

(1)在mybatis-config.xml中配置如下:

<!-- 加载数据库配置文件 -->
<properties  resource="jdbc.properties">
    <property name="username" value="root"/>
</properties>
<!-- 数据库连接 -->
<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC" />
        <dataSource type="POOLED">
            <property name="driver" value="${driver}" />
            <property name="url" value="${url}" />
            <property name="username" value="${username}" />
            <property name="password" value="${password}" />
        </dataSource>
    </environment>
</environments>

注意此时加载了一个jdbc.properties文件。

(2)jdbc.properties文件内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
password=XXX

注意此时在jdbc.properties文件中没有配置username属性。

(3)运行测试程序:
这个程序在http://blog.csdn.net/u012734723/article/details/77828903有说明
这里写图片描述

测试结果:
这里写图片描述
执行成功。

(4)在jdbc.properties中添加username属性:

username=aaa

程序不变,执行结果如下:
这里写图片描述

显示的是:用户名aaa不正确,拒绝aaa的登录。
说明在jdbc.properties中配置username属性的值覆盖了在mybatis-config.xml中的property的值。

(5)在SqlSessionFactoryBuilder().build()中引入另外一个properties,我这里命名为test.properties,内容如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test
username=bbb
password=XXX

跟jdbc.properties不同的就是username属性的值。程序修改如下:
这里写图片描述

测试结果如下:
这里写图片描述

与(4)结果类似,只是这次被拒绝访问的不是aaa,而是bbb。说明test.properties文件中的username属性的值覆盖了之前所有的。

(6)提醒大家注意的是:如果不使用占位符,而是直接赋值,如下所示:

这里写图片描述

这里是不会去找任何地方相同属性名称的值的。
执行结果如下:
这里写图片描述

(7)总结:
a.当使用占位符给某个属性赋值时,这个属性会去找properties属性下是否有同名的子属性property。
b.接着去找在xml中引入的resource或url中相同名称的属性值。
c.最后,如果在创建SqlSessionFactory时,SqlSessionFactoryBuilder有引入新的文件,文件中含有相同的属性名称,则之前设定的值都会被覆盖。

文章写得很浅,希望大家不吝赐教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值