properties标签的使用及细节
# 120.properties标签的使用及细节
properties标签里可以定义变量,然后在其他标签里使用,简化配置
# properties标签
举个鲤子,我们可以在properties定义一系列的属性(或者叫变量):
<?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">
<!-- Mybatis的主配置文件 -->
<configuration>
<properties>
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///LearnMybatis"/>
<property name="username" value="LearnMybatisUser"/>
<property name="password" value="LearnMybatisUserPassword"/>
</properties>
</configuration>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
然后其他标签里就可以取出这些变量的值,并使用:
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<!-- 配置事务的类型 -->
<transactionManager type="JDBC"/>
<!-- 配置数据源(连接池) -->
<dataSource type="POOLED">
<!-- 配置连接数据库的4个基本信息 -->
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
除了在XML里直接写属性之外,我们还可以将这些属性写到外部的配置文件。
我们在resources目录下新建一个jdbcConfig.properties,内容如下:
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql:///LearnMybatis
username=LearnMybatisUser
password=LearnMybatisUserPassword
2
3
4
然后我们就可以在主配置文件里引用该文件:
<configuration>
<properties resource="jdbcConfig.properties"/>
</configuration>
2
3
注意:resource属性必须按照类路径的写法来写,我们这里直接放在根目录下了,所以可以直接写文件名。
需要注意的是,Mybatis主配置文件中,变量名得和properties的键保持一直。如果jdbcConfig.properties是这样定义的:
jdbc.driver=com.mysql.cj.jdbc.Driver
则Mybatis主配置文件中,也必须用 ${jdbc.driver}
的方式来读取
# URL属性
除了使用resource属性来定位配置文件,我们还可以使用URL属性:
<properties url="file:///D:/Projects/LearnMybatis/src/main/resources/jdbcConfig.properties">
URL的属性值,得按照Url的写法来写地址。
URL:Uniform Resource Locator 统一资源定位符,它是可以唯一标识一个资源的位置,由协议+主机+端口+ URI 组成。例如我们之前学习Servlet的时候,有这样的路径:http://localhost:8080/hello/demo1
,在这里,协议就是HTTP协议,主机是localhost
,端口是8080,URI就是端口后面的内容:/hello/demo1
什么是URI:Uniform Resource Identifier 统一资源标识符。它可以在应用中唯一定位一个资源的。
除了HTTP协议之外,还有file协议,我们平时访问自己电脑的文件夹都是使用file协议的,只不过文件夹不显示而已。我们可以将一个文件拖到浏览器中,可以看到地址栏就是用file协议来访问文件的:
URL属性使用的较少,读者了解即可。
# 源码
本文所有代码已上传到了GitHub (opens new window)和Gitee (opens new window)上,并且创建了分支demo11,读者可以通过切换分支来查看本文的示例代码。