Mybatis入门-config文件标签属性(properties)加载顺序详解(三)

1.首先我们改造下SqlMappConfig.xml,如下:

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 这里我们把驱动文件单独建了个文件,使用标签加载-->
<properties resource="JDBC.properites"/>

<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>
<mappers>
    <mapper resource="com/msb/pojo/DeptMapper.xml"/>
</mappers>
</configuration>

resourcss目录下JDBC.properites文件内容,如下:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://192.168.220.130:3306/test_project?useUnicode=true&amp;characterEncoding=UTF-8
username=root
password=qwert123

运行测试结果正确:

在这里插入图片描述
2.再次改造SqlMappConfig.xml,加载JDBC.properites文件的同时,设置property属性值,这里test_project1的库实际是不存在的,我们来看下这里的url加载的是config下的还是
JDBC.properites文件的

<properties resource="JDBC.properites">
    <property name="url" value="jdbc:mysql://192.168.220.130:3306/test_project1?useUnicode=true&amp;
    characterEncoding=UTF-8"/>
</properties>

运行测试结果正确:

在这里插入图片描述

3.修改测试类中init方法,如下:

@Before
public void factoryInit() throws IOException{
    initLogRecord.initLog();
    InputStream resource = Resources.getResourceAsStream("SqlMapConfig.xml");
    SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
    factory = builder.build(resource);
}

这里builder.build(Reader rd)方法有个重载的方法为builder.build(Reader rd,String eviroment),不指定的话默认default的值,也可指定eviroment id值

在这里插入图片描述
运行测试结果正确:

在这里插入图片描述
这里就解释了Mybatis帮助文档上所说的:

如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:
首先读取在 properties 元素体内指定的属性。
然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆	盖之前读取过的同名属性。
最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的则是 	properties 元素中指定的属性。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值