1. 程式人生 > >Spring Boot中使用MyBatis註解配置開發詳解

Spring Boot中使用MyBatis註解配置開發詳解

Spring Boot中使用MyBatis註解配置詳解

原創   2018-04-03
宗野      

最近專案原因可能會繼續開始使用MyBatis,已經習慣於spring-data的風格,再回頭看xml的對映配置總覺得不是特別舒服,介面定義與對映離散在不同檔案中,使得閱讀起來並不是特別方便。

Spring中整合MyBatis就不多說了,最近大量使用Spring Boot,因此整理一下Spring Boot中整合MyBatis的步驟。搜了一下Spring Boot整合MyBatis的文章,方法都比較老,比較繁瑣。查了一下文件,實際已經支援較為簡單的整合與使用。下面就來詳細介紹如何在Spring Boot中整合MyBatis,並通過註解方式實現對映。

整合MyBatis

  • 新建Spring Boot專案,或以下為基礎來操作

  • pom.xml中引入依賴

    • 這裡用到spring-boot-starter基礎和spring-boot-starter-test用來做單元測試驗證資料訪問
    • 引入連線mysql的必要依賴mysql-connector-java
    • 引入整合MyBatis的核心依賴mybatis-spring-boot-starter
    • 這裡不引入spring-boot-starter-jdbc依賴,是由於mybatis-spring-boot-starter中已經包含了此依賴

  • 同之前介紹的使用jdbc和spring-data連線資料庫一樣,在application.properties中配置mysql的連線配置


同其他Spring Boot工程一樣,簡單且簡潔的的完成了基本配置,下面看看如何在這個基礎下輕鬆方便的使用MyBatis訪問資料庫。

使用MyBatis

  • 在Mysql中建立User表,包含id(BIGINT)、name(INT)、age(VARCHAR)欄位。同時,建立對映物件User

  • 建立User對映的操作UserMapper,為了後續單元測試驗證,實現插入和查詢操作
建立Spring Boot主類
  • 建立單元測試
    • 測試邏輯:插入一條name=AAA,age=20的記錄,然後根據name=AAA查詢,並判斷age是否為20
    • 測試結束回滾資料,保證測試單元每次執行的資料環境獨立

    使用Map

    如下程式碼,通過Map物件來作為傳遞引數的容器:

  • 使用Map

    如下程式碼,通過Map物件來作為傳遞引數的容器對於Insert語句中需要的引數,我們只需要在map中填入同名的內容即可,具體如下面程式碼所示:

  • 使用物件

    除了Map物件,我們也可直接使用普通的Java物件來作為查詢條件的傳參,比如我們可以直接使用User物件:

  • 這樣語句中的#{name}#{age}就分別對應了User物件中的nameage屬性。
  • 返回結果的繫結

    對於增、刪、改操作相對變化較小。而對於“查”操作,我們往往需要進行多表關聯,彙總計算等操作,那麼對於查詢的結果往往就不再是簡單的實體物件了,往往需要返回一個與資料庫實體不同的包裝類,那麼對於這類情況,就可以通過@Results@Result註解來進行繫結,具體如下:

    在上面程式碼中,@Result中的property屬性對應User物件中的成員名,column對應SELECT出的欄位名。在該配置中故意沒有查出id屬性,只對User對應中的name和age物件做了對映配置,這樣可以通過下面的單元測試來驗證查出的id為null,而其他屬性不為null:
  • 測試demo:dao:

測試程式碼: