W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
這些屬性可以在外部進(jìn)行配置,并可以進(jìn)行動態(tài)替換。你既可以在典型的 Java 屬性文件中配置這些屬性,也可以在properties
元素的子元素中設(shè)置。例如:
<properties resource="org/mybatis/example/config.properties">
<property name="username" value="dev_user"/>
<property name="password" value="F2Fa3!33TYyg"/>
</properties>
設(shè)置好的屬性可以在整個(gè)配置文件中用來替換需要動態(tài)配置的屬性值。比如:
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
這個(gè)例子中的 ?username
和 ?password
將會由 ?properties
元素中設(shè)置的相應(yīng)值來替換。 ?driver
和 ?url
屬性將會由 ?config.properties
? 文件中對應(yīng)的值來替換。這樣就為配置提供了諸多靈活選擇。
也可以在 ?SqlSessionFactoryBuilder.build()
?方法中傳入屬性值。例如:
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props);
// ... 或者 ...
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
如果一個(gè)屬性在不只一個(gè)地方進(jìn)行了配置,那么,MyBatis 將按照下面的順序來加載:
properties
元素體內(nèi)指定的屬性。
properties
元素中的resource
屬性讀取類路徑下屬性文件,或根據(jù) url
屬性指定的路徑讀取屬性文件,并覆蓋之前讀取過的同名屬性。
因此,通過方法參數(shù)傳遞的屬性具有最高優(yōu)先級,?resource/url
? 屬性中指定的配置文件次之,最低優(yōu)先級的則是 ?properties
元素中指定的屬性。
從 MyBatis 3.4.2 開始,你可以為占位符指定一個(gè)默認(rèn)值。例如:
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${username:ut_user}"/> <!-- 如果屬性 'username' 沒有被配置,'username' 屬性的值將為 'ut_user' -->
</dataSource>
這個(gè)特性默認(rèn)是關(guān)閉的。要啟用這個(gè)特性,需要添加一個(gè)特定的屬性來開啟這個(gè)特性。例如:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> <!-- 啟用默認(rèn)值特性 -->
</properties>
如果你在屬性名中使用了 ?":"
? 字符(如:?db:username
?),或者在 SQL 映射中使用了 ?OGNL
表達(dá)式的三元運(yùn)算符(如:? ${tableName != null ? tableName : 'global_constants'}
?),就需要設(shè)置特定的屬性來修改分隔屬性名和默認(rèn)值的字符。例如:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> <!-- 修改默認(rèn)值的分隔符 -->
</properties>
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${db:username?:ut_user}"/>
</dataSource>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: