mybatis系列筆記(3)---SqlMapConfig.xml解析,mybatissqlmapconfig
SqlMapConfig.xml
SqlMapConfig.xml是Mybatis的全域配置參數,關於他的具體用的有專門的MyBatis - API文檔,這裡面講的非常清楚,所以我這裡就挑幾個講下:
他的主要配置的屬性有如下:
1.properties 屬性
這些屬性都是可外部配置且可動態替換的,既可以在典型的 Java 屬性檔案中配置,亦可通過 properties 元素的子項目來傳遞。
1 <!-- 載入屬性檔案 -->2 <properties resource="db.properties">3 <!-- 可以在配置相關的其他事項 -->4 <!-- <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/> -->5 </properties>6 <!-- 這裡如果在db.properties和 name=""都配置了jdbc.driver那麼優先執行name中的-->7 <!-- 配置全域的參數資訊 -->
如果屬性在不只一個地方進行了配置,那麼 MyBatis 將按照下面的順序來載入:
- 在 properties 元素體內指定的屬性首先被讀取。
- 然後根據 properties 元素中的 resource 屬性讀取類路徑下屬性檔案或根據 url 屬性指定的路徑讀取屬性檔案,並覆蓋已讀取的同名屬性。
- 最後讀取作為方法參數傳遞的屬性,並覆蓋已讀取的同名屬性。
因此,通過方法參數傳遞的屬性具有最高優先順序,resource/url 屬性中指定的設定檔次之,最低優先順序的是 properties 屬性中指定的屬性。
2.settings全域的參數配置
這是 MyBatis 中極為重要的調整設定,它們會改變 MyBatis 的運行時行為。
具體的就不寫了唯寫一個運算式:
<!-- 配置全域的參數資訊 --> <settings> <setting name="" value=""/> </settings>
3.typeAliases(別名)
制定別名最大的一個優勢就是方便我們的開發,因為我們如果沒有設定別名的情況下,在mapper.xml中
定義了很多Statement ,Statement需要parameterType指定輸入參數的類型或者指定輸出結果的類型比如:
<!-- 根據id查詢使用者資訊 --> <select id="findUserById" parameterType="int" resultType="com.study.model.User"> SELECT * FROM USER WHERE id= #{id} </select>
這裡的resultType如果是對象一定要類的全名稱,那我們能不能唯寫了user就能達到同樣的效果,這樣是不是就有利於簡便我們的開發
有兩種方法:
1.單個別名的定義
1 <typeAliases>2 <!--3 單個別名的定義4 alias:別名,type:別名映射的類型 -->5 <!-- <typeAlias type="com.study.model.User" alias="user"/> -->6 </typeAliases>7 <!--這樣的話只需輸入user就能起到一樣效果-->
2.批量定義別名(常用)
1 <typeAliases>2 <!-- 批量別名定義3 指定包路徑,自動掃描包下邊的pojo,定義別名,別名預設為類名(首字母小寫或大寫)4 -->5 <package name="com.study.model"/>6 </typeAliases>
4.mappers(映射配置)
1.通過resource載入單個對應檔
1 <!-- 載入對應檔 -->2 <mappers>3 <mapper resource="sqlmap/User.xml" /> 4 </mappers>
2.通過mapper介面載入單個mapper
1 <mappers>2 <!-- 通過mapper介面 載入單個對應檔 必須遵循一些規範: 需要將mapper介面和mapper.xml對應檔 檔案名稱必須一致 並且在同一個目錄下 -->3 <mapper class="com.study.mapper.UserMapper" /> 4 </mappers>
3.批量載入mapper(推薦使用)
1 <mappers>2 <!-- 3 指定mapper介面的包名 mybatis會自動掃描這個包下所有的mapper介面 然後執行載入4 -->5 <package name="com.study.mapper"/>6 </mappers>
其他的我就不講了,要詳細的可以找api,非常的詳細,歡迎大家指點,謝謝!