Mybatis Properties 配置優先級詳解

Properties 配置方式

Mybatis提供瞭三種配置方式:

  • properties元素體內property子元素
  • properties配置文件
  • 程序參數傳遞

配置優先級別

  1. 在properties元素體內指定的屬性首先被讀取
  2. properties配置文件中配置的屬性
  3. 通過參數傳遞的方式

因此,通過參數傳遞的屬性具有最高優先級,properties配置文件次之,優先級最低的是在properties元素體內指定的屬性。

所以在生產中需要註意,最好的辦法是不要混合使用,推薦使用properties配置文件形式。

Mybatis properties屬性

這些屬性都是可外部配置且可動態替換的

既可以在典型的 Java 屬性文件中配置,亦可通過 properties 元素的子元素來傳遞。

例如:

<span style="font-size:14px;"><properties resource="org/mybatis/example/config.properties">
  <property name="username" value="dev_user"/>
  <property name="password" value="F2Fa3!33TYyg"/>
</properties></span>

其中的屬性就可以在整個配置文件中使用來替換需要動態配置的屬性值。

比如:

<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 文件中對應的值來替換。

這樣就為配置提供瞭諸多靈活選擇。

如果屬性在不隻一個地方進行瞭配置

那麼 MyBatis 將按照下面的順序來加載:

  • 在 properties 元素體內指定的屬性首先被讀取。
  • 然後根據 properties 元素中的 resource 屬性讀取類路徑下屬性文件或根據 url 屬性指定的路徑讀取屬性文件,並覆蓋已讀取的同名屬性。
  • 最後讀取作為方法參數傳遞的屬性,並覆蓋已讀取的同名屬性。

因此,通過方法參數傳遞的屬性具有最高優先級,resource/url 屬性中指定的配置文件次之,最低優先級的是 properties 屬性中指定的屬性。

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: