MyBatis學習筆記(二)——優化MyBatis配置檔案
在使用MyBatis的時候,MyBatis的配置檔案可以說是相當重要的了。那麼,我們先來看看MyBatis配置檔案中的內容和順序:
<properties>(屬性) <setting>(全域性配置引數) <typeAliases>(類型別名) <typeHandlers>(型別處理器) <objectFactory>(物件工廠) <plugins>(外掛) <environments>(環境集合屬性物件) <environment>(環境子屬性物件) <transactionManager>(事務管理) dataSource>(資料來源) <mappers>(對映器)
注意:在編寫Mybatis的配置檔案時需要嚴格遵守配置內容的順序,否則編譯時會丟擲異常。
一、<properties>屬性
可以把一些通用的屬性值配置在屬性檔案中,載入到mybatis執行環境內。例如建立db.properties檔案,然後在SqlMapperConfig.xml中進行配置。db.properties檔案內容如下:
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/first_mybatis?useSSL=false&useUnicode=true&characterEncoding=utf8 jdbc.username=root jdbc.password=password.
然後在SqlMapperConfig.xml中進行配置,在<environments>
標籤中用${}
符號做如下修改,如下:
注意:Mybatis將按照下面的順序來載入屬性
- 1.在properties標籤之間定義的屬性首先被讀取。
- 2.然後會讀取properties標籤內部resource或url的屬性,它會覆蓋已讀取的同名屬性。
- 3.最後讀取parameterType(即insert標籤或是update標籤或是…)傳遞的屬性,它會覆蓋已讀取的同名屬性。
所以我們建議使用properties標籤時,不要在properties標籤之間定義屬性,只引用在.properties檔案中定義的屬性,並且.properties檔案中定義的key值要有一些特殊的規則。例如我上述定義key值時前面都加了jdbc.的字首
二、<settings>
全域性引數配置
mybatis執行時可以調整一些全域性引數(相當於軟體的執行引數)。根據使用需求進行引數配置。但是要注意:小心配置,配置引數會影響mybatis的執行。
三、<typeAliases>
屬性
可以將parameterType、resultType中指定的型別通過別名引用。MyBatis提供了很多的別名如下:
這裡我們採用自定義的別名,在SqlMapperConfig.xml中進行如下配置:
定義別名後這樣我們在parameterType和resultType中使用時就不用再繁瑣的指定類的全限定類名了。
四、<typeHandlers>
屬性
型別處理器將java型別和jdbc型別進行對映,mybatis提供了很多型別處理器,一般情況下夠用了。
五、<mapper>
對映器屬性
之前我們在配置檔案中使用的<mapper>
標籤內容為:<mapper resource=“mapper/UserMapper.xml”/>
,接下來我要講的是另一種在配置檔案中對映mapper動態代理的方法。在配置檔案中這樣配置<mapper class=“mapper.UserMapper”/>
,這樣的要求需要保證UserMapper.xml檔案和UserMapper.java在同一個包下且.xml檔案和.java檔名要同名。