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,读者可以通过切换分支来查看本文的示例代码。