1. 程式人生 > >Mybatis學習筆記(六)——配置檔案

Mybatis學習筆記(六)——配置檔案

本部落格原始碼下載:戳我一下

Mybatis學習筆記彙總:戳我一下

一、配置檔案內容

SqlMapConfig.xml中配置的內容和順序如下:

  • properties(屬性)
  • settings(全域性配置引數)
  • typeAliases(類型別名)
  • typeHandlers(型別處理器)
  • objectFactory(物件工廠)
  • plugins(外掛)
  • environments(環境集合屬性物件)

    • environment(環境子屬性物件)

      • transactionManager(事務管理)

      • dataSource(資料來源)

  • mappers(對映器)

二、properties(屬性)

SqlMapConfig.xml可以引用java屬性檔案中的配置資訊如下:

classpath下定義db.properties檔案

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=mysql

SqlMapConfig.xml引用如下:

<properties resource="db.properties"/>
    <!--在properties這個標籤中還可以配置一些屬性名和屬性值 -->
<!-- <property name="" value=""/> --> <environments default="development"> <environment id="development"> <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="password" value="${jdbc.password}"/> </dataSource> </environment> </environments>

注意: MyBatis 將按照下面的順序來載入屬性:

1、在 properties 元素體內定義的屬性首先被讀取。
2、然後會讀取properties元素中resourceurl載入的屬性,它會覆蓋已讀取的同名屬性。
3、最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性。

因此,通過parameterType傳遞的屬性具有最高優先順序,resource或 url 載入的屬性次之,最低優先順序的是 properties 元素體內定義的屬性。

三、settings(全域性引數配置)

這是 MyBatis 中極為重要的調整設定,它們會改變 MyBatis 的執行時行為。下表描述了設定中各項的意圖、預設值等。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

四、typeAliases(類型別名)

別名 型別
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
object Object
map Map
hashmap HashMap
list List
arraylist ArrayList
collection Collection
iterator Iterator

類型別名的使用

    <typeAliases>
        <!-- 針對單個別名的定義 
            type:型別的路徑
            alias:別名
        -->
        <!-- <typeAlias type="com.jiayifan.po.User" alias="User"/> -->
        <!-- 批量別名定義 
            指定包名,mybatis會自動的掃描pojo類,自動定義別名,別名就是
            類名,首字母大寫或小寫都可以
        -->
        <package name="com.jiayifan.po"/>
    </typeAliases>

五、typeHandlers(型別處理器)

型別處理器用於java型別和jdbc型別對映,如下:

<select id="findUserById" parameterType="int" resultType="user">
        select * from user where id = #{id}
</select>

mybatis自帶的型別處理器基本上滿足日常需求,不需要單獨定義。

六、mappers(對映器)

Mapper配置的幾種方法:
1、<mapper resource=" " />
使用相對於類路徑的資源
如:<mapper resource="sqlmap/User.xml" />

2、<mapper url=" " />
使用完全限定路徑
如:<mapper url="file:///D:\workspace_spingmvc\mybatis_01\config\sqlmap\User.xml" />

3、<mapper class=" " />
使用mapper介面類路徑
如:<mapper class="cn.itcast.mybatis.mapper.UserMapper"/>

注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。

4、<package name=""/>
註冊指定包下的所有mapper介面
如:<package name="cn.itcast.mybatis.mapper"/>
注意:此種方法要求mapper介面名稱和mapper對映檔名稱相同,且放在同一個目錄中。
程式碼例項

    <mappers>
        <!-- 通過resource方法一次載入一個對映檔案 -->
        <mapper resource="sqlmap/User.xml"/>
        <!-- <mapper resource="mapper/UserMapper.xml"/> -->
        <!-- 通過mapper介面載入單個對映檔案
            遵循一些規範:需要將mapper介面的類名和mapper.xml對映檔名保持一致
            且在一個目錄中,這個的前提是使用mapper代理的方法
         -->
        <!-- <mapper class="com.jiayifan.mapper.UserMapper"/> -->
        <!-- 批量載入 
            指定mapper介面的包名,mybatis自動的掃描包下的所有mapper介面
            並載入,但是必須遵循 “通過mapper介面載入單個對映檔案”的規範
        -->
        <package name="com.jiayifan.mapper"/>
    </mappers>

參考了下面的一些文章: