Mybatis-04 XML配置属性文件properties

Love The Way You Lie 2022-04-16 02:54 398阅读 0赞

Mybatis学习笔记04

        • 01 新建属性文件jdbc.properties
        • 02 修改Mybatis文件
        • 03 properties
        • 04 properties 的属性 resource 和 url
        • 05 properties 属性 加载顺序
        • 05 properties 占位符

01 新建属性文件jdbc.properties

driver、url需要根据自己使用的数据库具体配置,本文使用mysql数据库

  1. ## 数据库属性配置文件内容
  2. jdbc.driver=com.mysql.cj.jdbc.Driver
  3. jdbc.url=jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=UTC
  4. jdbc.username=****
  5. jdbc.password=****

02 修改Mybatis文件

原配置如下

  1. <configuration>
  2. <!-- 配置运行环境 -->
  3. <environments default="mysql">
  4. <environment id="mysql">
  5. <transactionManager type="JDBC" />
  6. <dataSource type="POOLED">
  7. <property name="driver" value="com.mysql.cj.jdbc.Driver" />
  8. <property name="url" value="jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=UTC" />
  9. <property name="username" value="****" />
  10. <property name="password" value="****" />
  11. </dataSource>
  12. </environment>
  13. </environments>
  14. </configuration>

更新后的配置

  1. <configuration>
  2. <!-- 引入数据库配置文件 -->
  3. <properties resource="jdbc.properties" />
  4. <!-- 配置运行环境 -->
  5. <environments default="mysql">
  6. <environment id="mysql">
  7. <transactionManager type="JDBC" />
  8. <dataSource type="POOLED">
  9. <property name="driver" value="${jdbc.driver}"/>
  10. <property name="url" value="${jdbc.url}"/>
  11. <property name="username" value="${jdbc.username}"/>
  12. <property name="password" value="${jdbc.password}"/>
  13. </dataSource>
  14. </environment>
  15. </environments>
  16. </configuration>

03 properties

properties属性都是可外部配置且可动态替换 例如:

  1. 当需要更新配置时,既可以修改配置文件,也可以动态替换属性
  2. <properties resource="jdbc.properties"> <!-- 外部配置-->
  3. <property name="username" value="dev_user"/> <!-- 动态替换-->
  4. <property name="password" value="F2Fa3!33TYyg"/> <!-- 动态替换-->
  5. </properties>

04 properties 的属性 resource 和 url

相同处:resource / url 都是用来引入配置文件路径的
不同:
resource 标签用来引入项目的相对路径
url标签用来引入网络路径或者自盘路径下的资源

05 properties 属性 加载顺序

  1. 在 properties 元素体内指定的属性首先被读取。
  2. 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
  3. 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。

properties 文件加载的源码. 可以看出文件加载顺序

  1. private void propertiesElement(XNode context) throws Exception {
  2. if (context != null) {
  3. /**
  4. * 解析properties 属性中指定的属性。
  5. */
  6. Properties defaults = context.getChildrenAsProperties();
  7. String resource = context.getStringAttribute("resource"); //resource 制定的属性路径
  8. String url = context.getStringAttribute("url"); //url制定的属性路径
  9. if (resource != null && url != null) {
  10. throw new BuilderException("The properties element cannot specify both a URL and a resource based property file reference. Please specify one or the other.");
  11. }
  12. /**
  13. * 根据 properties 元素中的 resource 属性读取类路径下属性文件,并覆盖properties 属性中指定的同名属性。
  14. */
  15. if (resource != null) {
  16. defaults.putAll(Resources.getResourceAsProperties(resource));
  17. } else if (url != null) {
  18. /**
  19. * 根据properties元素中的url属性指定的路径读取属性文件,并覆盖properties 属性中指定的同名属性。
  20. */
  21. defaults.putAll(Resources.getUrlAsProperties(url));
  22. }
  23. /**
  24. * 获取方法参数传递的properties
  25. * 创建XMLConfigBuilder实例时,this.configuration.setVariables(props);
  26. */
  27. Properties vars = configuration.getVariables();
  28. if (vars != null) {
  29. defaults.putAll(vars);
  30. }
  31. parser.setVariables(defaults);
  32. configuration.setVariables(defaults);
  33. }
  34. }

05 properties 占位符

从MyBatis 3.4.2开始,你可以为占位符指定一个默认值。

  1. <dataSource type="POOLED">
  2. <!-- ... -->
  3. <property name="username" value="${username:ut_user}"/>
  4. </dataSource>

这个特性默认是关闭的。如果你想为占位符指定一个默认值, 你应该添加一个指定的属性来开启这个特性。

  1. <properties resource="org/mybatis/example/config.properties">
  2. <!-- ... -->
  3. <property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
  4. </properties>

发表评论

表情:
评论列表 (有 0 条评论,398人围观)

还没有评论,来说两句吧...

相关阅读