<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties>在整个配置文件中,这些属性能够被可动态替换(即使用占位符)的属性值引用,例如:
<dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource>示例中的username 和password 将会被替换为配置在properties 元素中的相应值。driver 和url 属性则会被config.properties 文件中的相应值替换。这里提供了大量的配置选项。 这些属性也可以传递给sqlSessionFactoryBuilder.build()方法。例如:
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, props); // ... or ... SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment, props);
如果一个属性存在于多个地方,MyBatis 将使用下面的顺序加载: •首先读入properties 元素主体中指定的属性。
然后会加载类路径或者properties 元素中指定的url 的资源文件属性。它会覆盖前面已 经读入的重复属性。
通过方法参数来传递的属性将最后读取(即通过sqlSessionFactoryBuilder.build),同样也 会覆盖从properties 元素指定的和resource/url 指定的重复属性。
因此最优先的属性是通过方法参数来传递的属性,然后是通过resource/url 配置的属性,最 后是在MyBatis 的Mapper 配置文件中,properties 元素主体中指定的属性。