Springboot 整合mybatis(二)
本篇詳細介紹下每個檔案的作用
一、配置檔案 application.yml
關鍵的引數是最後2個:
mapper-locations: --存放mybatis對應的sql語句的XML檔案的位置,這也是為什麼上篇文章裡說的此檔案必須存放在resources目錄下。
type-aliases-package: 資料表對應的實體類檔案的存放路徑。
PS:簡單講下yml格式的配置檔案與properties格式的不同
1.在properties 檔案中是以“.”進行分割,在yml 中使用“:”進行分割
2.yml 的資料格式和json 的格式很像,都是Key-Value 結構的。並且是通過“:”賦值
3.在yml 中縮排一定不能使用TAB 件,只能用空格,否則會報錯。
4.每個Key的冒號後面一定要加一個空格
二、UserMapper.xml
mybatis對應的sql語句的XML檔案,位置必須在resources目錄下。
三、Dao層UserMapper.java 介面檔案
與SpringMVC不一樣地方就是要新增一個註解@Mapper。
四、Service 服務層
包含介面檔案及實現,和以前在SpringMVC下沒什麼區別。
注意:第16行與21行發生異常時,不同的回滾處理,在某些特殊功能邏輯下可能需要用到不回滾異常的處理。
五、Controller層
由於本案例使用的是測試單元,沒有使用Controller層,就不多說了。
六、事務的統一處理 TransactionAdviceConfig.java
在這裡我使用的是AOP方式,具體的程式碼如下圖
簡單介紹下幾個關鍵的地方
第19行:對符合這個規則的所有服務層都進行事務管理,在本案例中即com.example.demo.service下所有以Service結尾的fu服務層進行事務管理。
第26-27行:設定事務的傳播機制為 PROPAGATION_REQUIRED。
第29-31行:設定事務的傳播機制為 PROPAGATION_REQUIRED,且為只讀事務。這裡與以前在SpringMVC通過XML方式整合mybatis是有點不一樣,在XML裡時為<tx:method name="load*" propagation="SUPPORTS" read-only="true"/>,轉播機制為SUPPORTS,是可以為只讀事務的,而在這裡將傳播機制設為 PROPAGATION_SUPPORTS,只讀事務不起作用,原因我沒有去查,如果有哪位同學知道,請告訴我。
第33-42行:設定服務層每個方法名的不同事務機制,這樣做有幾點好處,
1)規範系統的命名
2)通過方法名稱即可知道此方法主要是幹什麼用的
3)提高效率
PS: 在SpringMVC下,可以通過XML設定出現異常不回滾的方法嗎字首,但是在Springboot下我沒有找到統一設定的地方,只能通過在方法上加註解的方式實現,如上面第四步所示,如果哪位同學知道,也請告訴我。
七、測試檔案ApplicationTests.java