欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-23 23:21:56
...

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

运行测试结果正确:

Mybatis入门-config文件标签属性(properties)加载顺序详解(三)
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>

运行测试结果正确:

Mybatis入门-config文件标签属性(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入门-config文件标签属性(properties)加载顺序详解(三)
运行测试结果正确:

Mybatis入门-config文件标签属性(properties)加载顺序详解(三)
这里就解释了Mybatis帮助文档上所说的:

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