1. 程式人生 > 其它 >Springboot下myabtis update delete等無法重新整理二級快取

Springboot下myabtis update delete等無法重新整理二級快取

技術標籤:springbootjavamybatisspring boot

起因:今天在加上mybatis二級快取的時候,發現update delete方法都無法重新整理快取,仔細查了一下,網上很多方法都沒有用,然後突然想到@Transactional和二級快取會有衝突,於是我把事務去掉,發現重新整理快取生效

在這裡插入圖片描述

再仔細排查了一下,發現是事務生命週期造成的,將supports改成required,就可以解決了

解決方法:
在這裡插入圖片描述

生命週期詳解:

required:方法A呼叫呼叫時,沒有事務新建一個事務,當在方法A呼叫另外一個方法B的時候,方法B將使用相同的事務,;如果方法B發生異常需要資料回滾的時候,整個事務資料回滾。

requried_new:對於方法A和方法B在被呼叫的時候,無論是否有事務,都將開啟一個新的事務,如果方法A有異常,方法B的資料不會回滾。

supports:方法呼叫的時候,有事務就呼叫事務,沒有事物就不使用事物。

no_supports:強制方法不在事務中執行,如有事務,在方法呼叫的到結束階段事務將被掛起。

never:強制方法不在事務中執行,如有事務則丟擲事務、

mandatory:強制方法在事務中執行,若無事務將丟擲異常。

具體原因,要深入原始碼去找,後面有時間會繼續寫…