029-聲明式事務(wù)

所有的數(shù)據(jù)訪問技術(shù)都有事務(wù)處理機制外里,這些技術(shù)提供了API用來開啟事務(wù)和提交事務(wù)來完成數(shù)據(jù)操作,或者在發(fā)生錯誤的時候回滾數(shù)據(jù)狡忙。

Spring支持聲明式事務(wù)燎竖,即使用注解來選擇使需要用事務(wù)的方法,它使用@Transactional注解在方法上哥捕,表明該方法需要事務(wù)支持牧抽。這是一個機遇AOP的實現(xiàn)操作。被注解的方法在被調(diào)用時遥赚,Spring開啟一個新的事務(wù)阎姥,當(dāng)方法無異常運行結(jié)束后,Spring會提交這個事務(wù)鸽捻。

springboot開啟事務(wù)很簡單,只需要一個注解@Transactional 就可以了泽腮。因為在springboot中已經(jīng)默認(rèn)對jpa御蒲、jdbc、mybatis開啟了事事務(wù)诊赊,引入它們依賴的時候厚满,事物就默認(rèn)開啟。當(dāng)然碧磅,如果你需要用其他的orm碘箍,比如beatlsql,就需要自己配置相關(guān)的事物管理器鲸郊。


下面演示springboot整合mybatis使用聲明式事務(wù)丰榴。

創(chuàng)建項目

首先創(chuàng)建項目,

因為spring默認(rèn)支持事務(wù)秆撮,所以不需要引入專門的事務(wù)依賴四濒。

接下來配置數(shù)據(jù)源和mybatis:

上面都是一些簡單的配置,不多說职辨,下面開始寫物業(yè)代碼盗蟆,首先是實體類:


然后是mapper類:

這里只定義了一個根據(jù)id修改name的方法,測試事務(wù)足夠了舒裤。接下來是service方法:

這里更新了兩個用戶喳资,接下來看controller類:

現(xiàn)在數(shù)據(jù)庫中手動初始化兩個數(shù)據(jù):

然后啟動項目測試接口:

根據(jù)鏈接可以看到更新了兩個名字:

數(shù)據(jù)庫中也更新成功了。

接下來讓中間發(fā)生一個異常:

0作為除數(shù)會引發(fā)運行時異常腾供,接下來啟動項目執(zhí)行接口:

可以看到果然引發(fā)了異常仆邓,再來看看數(shù)據(jù)庫:

可以看到一個成功鲜滩,一個失敗,這顯然是沒有加事務(wù)的原因宏赘。接下來加上事務(wù):

然后重啟項目绒北,訪問接口:

可以看到依然報錯,并且數(shù)據(jù)庫也沒發(fā)生改變察署。


事務(wù)不僅可以加在修改之類的方法上闷游,還可以加在查詢方法上,需要設(shè)置屬性

readOnly =true

屬性默認(rèn)的值時false贴汪。


事務(wù)加在方法上默認(rèn)對一個方法起作用脐往,加在類上面默認(rèn)對類中所有的方法起作用。比如可以在類上面加一個只讀事務(wù)

這樣所有的方法都是只讀扳埂,但是在增刪改等方法上面加上讀寫事務(wù)來覆蓋類事務(wù):

除了readOnly屬性股耽,還有rollbackFor屬性也常用,比如下面的意思就是碰到屬于Exception的異常就回滾:


springboot默認(rèn)的配置已經(jīng)可以滿足絕大部分需求谓娃,所以需要使用事務(wù)基本上直接使用注解即可展东,不需要像ssm那樣再配置其它的內(nèi)容。


代碼地址:?https://gitee.com/blueses/spring-boot-demo

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末岩调,一起剝皮案震驚了整個濱河市巷燥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌号枕,老刑警劉巖缰揪,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異葱淳,居然都是意外死亡钝腺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門赞厕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來艳狐,“玉大人,你說我怎么就攤上這事皿桑〗┏郏” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵唁毒,是天一觀的道長蒜茴。 經(jīng)常有香客問我,道長浆西,這世上最難降的妖魔是什么粉私? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮近零,結(jié)果婚禮上诺核,老公的妹妹穿的比我還像新娘抄肖。我一直安慰自己,他們只是感情好窖杀,可當(dāng)我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布漓摩。 她就那樣靜靜地躺著,像睡著了一般入客。 火紅的嫁衣襯著肌膚如雪管毙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天桌硫,我揣著相機與錄音夭咬,去河邊找鬼。 笑死铆隘,一個胖子當(dāng)著我的面吹牛卓舵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播膀钠,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼掏湾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了肿嘲?” 一聲冷哼從身側(cè)響起忘巧,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎睦刃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體十酣,經(jīng)...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡涩拙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了耸采。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片兴泥。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖虾宇,靈堂內(nèi)的尸體忽然破棺而出搓彻,到底是詐尸還是另有隱情,我是刑警寧澤嘱朽,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布旭贬,位于F島的核電站,受9級特大地震影響搪泳,放射性物質(zhì)發(fā)生泄漏稀轨。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一岸军、第九天 我趴在偏房一處隱蔽的房頂上張望奋刽。 院中可真熱鬧瓦侮,春花似錦、人聲如沸佣谐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狭魂。三九已至罚攀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間趁蕊,已是汗流浹背坞生。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留掷伙,地道東北人是己。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像任柜,于是被迫代替她去往敵國和親卒废。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內(nèi)容