1. 程式人生 > >MyBatis(3)之MyBatis全域性配置檔案

MyBatis(3)之MyBatis全域性配置檔案

全域性配置檔案(如SqlMapConfig.xml)

configuration配置
  • properties屬性
  • setting設定
  • typeAliases型別命名
  • typeHandlers型別處理器
  • objectFactory物件工廠
  • plugins外掛
  • environments環境
  • environment環境變數
  • transactionManager事務管理器
  • dataSource資料來源
  • 對映器

原SqlMapConfig.xml

<configuration>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql///test"/>
                <property name="username" value="root"/>
                <property name="password" value="12345"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <mapper resource="sqlmap/User.xml"/>
    </mappers>
</configuration>

db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/human_resource?characterEncoding=utf-8
jdbc.username=root
jdbc.password=12345

改後SqlMapConfig.xml

<configuration>
    <properties resource="db.prperties">
       //<property name="jdbc.username" value="root"/> ①
    </properties>
    <environments default="mysql">
        <environment id="mysql">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                //<property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
                //<property name="password" value="12345"/>
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <mapper resource="sqlmap/User.xml"/>
    </mappers>
</configuration>
(1)properties

利用 properties元素的 resource屬性將外部屬性檔案載入進來;

載入屬性的順序:

  1. 讀取 properties元素中定義的屬性首先載入(即 上面①);
  2. 讀取 properties元素的 resource屬性載入的屬性檔案中的屬性(即 db.properties),會覆蓋掉 1;【常用】
  3. 讀取 parameterType中傳遞的屬性,會覆蓋掉已被讀取的同名屬性值; (最高優先順序屬性是那些作為方法引數的,即 parameterType傳遞過來的屬性) 一般:常用載入 .properties外部屬性檔案的方法;在 .properties檔案中,key加上特殊規則(如 jdbc.xx)。

如在 config下建立一個 db.properties屬性檔案(與 log4j.properties同目錄),此時可在全域性配置檔案中新增< properties>利用 resource屬性將 db.properties檔案載入進來,通過屬性檔案中的鍵得到值,此時< DataSource>中< property name=“driver” value="${jdbc.driver}">即通過 $ {鍵 }獲取值; 也可以直接在< properties>下新增 < property>,再通過 $ {鍵 }獲取值;