MyBatis中的properties配置(推薦)
這些屬性都是可外部配置且可動(dòng)態(tài)替換的,既可以在典型的 Java 屬性文件中配置,亦可通過(guò) properties 元素的子元素來(lái)傳遞。例如:
<properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties>
其中的屬性就可以在整個(gè)配置文件中使用來(lái)替換需要?jiǎng)討B(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 將會(huì)由 properties 元素中設(shè)置的相應(yīng)值來(lái)替換。 driver 和 url 屬性將會(huì)由 config.properties 文件中對(duì)應(yīng)的值來(lái)替換。這樣就為配置提供了諸多靈活選擇。
屬性也可以被傳遞到 SqlSessionFactoryBuilder.build()方法中。例如:
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, props); // ... or ... SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader, environment, props);
如果屬性在不只一個(gè)地方進(jìn)行了配置,那么 MyBatis 將按照下面的順序來(lái)加載:
在 properties 元素體內(nèi)指定的屬性首先被讀取。
然后根據(jù) properties 元素中的 resource 屬性讀取類(lèi)路徑下屬性文件或根據(jù) url 屬性指定的路徑讀取屬性文件,并覆蓋已讀取的同名屬性。
最后讀取作為方法參數(shù)傳遞的屬性,并覆蓋已讀取的同名屬性。
因此,通過(guò)方法參數(shù)傳遞的屬性具有最高優(yōu)先級(jí),resource/url 屬性中指定的配置文件次之,最低優(yōu)先級(jí)的是 properties 屬性中指定的屬性。
從MyBatis 3.4.2開(kāi)始,你可以為占位符指定一個(gè)默認(rèn)值。例如:
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${username:ut_user}"/> <!-- If 'username' property not present, username become 'ut_user' -->
</dataSource>
這個(gè)特性默認(rèn)是關(guān)閉的。如果你想為占位符指定一個(gè)默認(rèn)值, 你應(yīng)該添加一個(gè)指定的屬性來(lái)開(kāi)啟這個(gè)特性。例如:
<properties resource="org/mybatis/example/config.properties"> <!-- ... --> <property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/> <!-- Enable this feature --> </properties>
你可以使用 ":" 作為屬性鍵(e.g. db:username) 或者你也可以在sql定義中使用 OGNL 表達(dá)式的三元運(yùn)算符(e.g. ${tableName != null ? tableName : 'global_constants'}), 你應(yīng)該通過(guò)增加一個(gè)指定的屬性來(lái)改變分隔鍵和默認(rèn)值的字符。例如:
<properties resource="org/mybatis/example/config.properties">
<!-- ... -->
<property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/> <!-- Change default value of separator -->
</properties>
<dataSource type="POOLED">
<!-- ... -->
<property name="username" value="${db:username?:ut_user}"/>
</dataSource>
總結(jié)
以上所述是小編給大家介紹的MyBatis中的properties配置,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
分析Spring框架之設(shè)計(jì)與實(shí)現(xiàn)資源加載器
Spring框架是由于軟件開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。然而,Spring的用途不僅僅限于服務(wù)器端的開(kāi)發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合性角度而言,絕大部分Java應(yīng)用都可以從Spring中受益。今天來(lái)分析它的設(shè)計(jì)與實(shí)現(xiàn)資源加載器,從Spring.xml解析和注冊(cè)Bean對(duì)象2021-06-06
java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例
這篇文章主要介紹了java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例,有助于讀者加深對(duì)文件操作的理解,需要的朋友可以參考下2014-07-07
解決Spring中@Value注解取值為null問(wèn)題
近期應(yīng)用中因業(yè)務(wù)迭代需要接入 user 客戶(hù)端,接入后總是啟動(dòng)失敗,報(bào)注冊(cè) user bean 依賴(lài)的配置屬性為 null,所以接下來(lái)小編就和大家一起排查分析這個(gè)問(wèn)題,感興趣的小伙伴跟著小編一起來(lái)看看吧2023-08-08
如何使用Java語(yǔ)言編寫(xiě)打地鼠游戲全過(guò)程
打地鼠是我們非常熟悉的一款小游戲,它的游戲結(jié)構(gòu)和規(guī)則也都比較簡(jiǎn)單,那么如果能夠親自徒手開(kāi)發(fā)這樣的一款經(jīng)典小游戲呢?這篇文章主要給大家介紹了關(guān)于如何使用Java語(yǔ)言編寫(xiě)打地鼠游戲的相關(guān)資料,需要的朋友可以參考下2024-06-06
java 流操作對(duì)文件的分割和合并的實(shí)例詳解
這篇文章主要介紹了java 流操作對(duì)文件的分割和合并的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
關(guān)于RequestMapping注解的作用說(shuō)明
這篇文章主要介紹了關(guān)于RequestMapping注解的作用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。2022-01-01
Java使用POI從Excel讀取數(shù)據(jù)并存入數(shù)據(jù)庫(kù)(解決讀取到空行問(wèn)題)
有時(shí)候需要在java中讀取excel文件的內(nèi)容,專(zhuān)業(yè)的方式是使用java POI對(duì)excel進(jìn)行讀取,這篇文章主要給大家介紹了關(guān)于Java使用POI從Excel讀取數(shù)據(jù)并存入數(shù)據(jù)庫(kù),文中介紹的辦法可以解決讀取到空行問(wèn)題,需要的朋友可以參考下2023-12-12
SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例
在商用密碼體系中,SM4主要用于數(shù)據(jù)加密,本文就來(lái)介紹一下SpringBoot實(shí)現(xiàn)國(guó)密SM4加密解密的使用示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10

