Spring Boot中使用MyBatis註解配置開發詳解
阿新 • • 發佈:2018-11-11
Spring Boot中使用MyBatis註解配置詳解
原創 2018-04-03宗野 Spring Boot
最近專案原因可能會繼續開始使用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,為了後續單元測試驗證,實現插入和查詢操作
- 建立單元測試
- 測試邏輯:插入一條name=AAA,age=20的記錄,然後根據name=AAA查詢,並判斷age是否為20
- 測試結束回滾資料,保證測試單元每次執行的資料環境獨立
使用Map
如下程式碼,通過Map物件來作為傳遞引數的容器:
使用Map
如下程式碼,通過Map物件來作為傳遞引數的容器對於Insert語句中需要的引數,我們只需要在map中填入同名的內容即可,具體如下面程式碼所示:
使用物件
除了Map物件,我們也可直接使用普通的Java物件來作為查詢條件的傳參,比如我們可以直接使用User物件:
- 這樣語句中的
#{name}
、#{age}
就分別對應了User物件中的name
和age
屬性。 返回結果的繫結
對於增、刪、改操作相對變化較小。而對於“查”操作,我們往往需要進行多表關聯,彙總計算等操作,那麼對於查詢的結果往往就不再是簡單的實體物件了,往往需要返回一個與資料庫實體不同的包裝類,那麼對於這類情況,就可以通過
在上面程式碼中,@Result中的property屬性對應User物件中的成員名,column對應SELECT出的欄位名。在該配置中故意沒有查出id屬性,只對User對應中的name和age物件做了對映配置,這樣可以通過下面的單元測試來驗證查出的id為null,而其他屬性不為null:@Results
和@Result
註解來進行繫結,具體如下:- 測試demo:dao:
測試程式碼: