1.property元素
在配置mybatis与SQL映射时时常会用到property元素,例如配置dataSource时。注意要区别的是,property在中文翻译过来是属性,但元素内的attribute也会翻译成属性,所以个人倾向用英文。property元素也是一种键值的格式:
<property name="username" value="123"/>
2.预先设置property元素
在配置mybatis时可以通过properties元素预先设计好property的value,并在想要获取值的时候通过${}获取,
<?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="config.properties">
<property name="username" value="root"/>
<property name="password" value="0000"/>
</properties>
<environments default="default">
<environment id="default">
<!-- 事物管理器配置 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源配置 -->
<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>
...
</mappers>
</configuration>
既可以通过properties文件预先设计好导入,也可以在properties中设计相应的property,由于可能在设置键时会出现命名重复的现象,所以mybatis会对取值有覆盖,首先mybatis会先读取properties元素内的property元素,之后如果有resource那么便会根据该路径读取property当出现键相同的情况便会覆盖,最后如果property的值是读取方法参数并且键相同时便会覆盖。也就是:
总结:方法参数属性>resource中配置文件里的属性>在xml的properties元素配置的属性:
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="config.properties">
<!-- driver中的值会被config.properties中的值所覆盖 -->
<property name="driver" value=""/>
<property name="username" value="root"/>
<property name="password" value="0000"/>
</properties>
<environments default="default">
<environment id="default">
<!-- 事物管理器配置 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源配置 -->
<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>
...
</mappers>
</configuration>
config.properties
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/mark