1. 程式人生 > >MyBatis學習筆記(二)——優化MyBatis配置檔案

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檔名要同名。