1. 程式人生 > >Springboot 整合mybatis(二)

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