SpringBoot非官方教程 | 第七篇:springboot開啟聲明式事務

https://blog.csdn.net/forezp/article/details/70341818
本文出自方志朋的博客

springboot開啟事務很簡單讯赏,只需要一個注解@Transactional 就可以了枢舶。因為在springboot中已經(jīng)默認對jpa尝哆、jdbc图呢、mybatis開啟了事事務眯亦,引入它們依賴的時候肢扯,事物就默認開啟误算。當然仰美,如果你需要用其他的orm迷殿,比如beatlsql,就需要自己配置相關的事物管理器咖杂。

準備階段

以上一篇文章的代碼為例子庆寺,即springboot整合mybatis,上一篇文章是基于注解來實現(xiàn)mybatis的數(shù)據(jù)訪問層,這篇文章基于xml的來實現(xiàn)渗饮,并開啟聲明式事務蝇摸。

環(huán)境依賴

在pom文件中引入mybatis啟動依賴:

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.3.0</version>
</dependency>

引入mysql 依賴:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.0.29</version>
</dependency>

初始化數(shù)據(jù)庫腳本

-- create table `account`
# DROP TABLE `account` IF EXISTS
CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `money` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
INSERT INTO `account` VALUES ('1', 'aaa', '1000');
INSERT INTO `account` VALUES ('2', 'bbb', '1000');
INSERT INTO `account` VALUES ('3', 'ccc', '1000');

配置數(shù)據(jù)源

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath*:mybatis/*Mapper.xml
mybatis.type-aliases-package=com.forezp.entity

通過配置mybatis.mapper-locations來指明mapper的xml文件存放位置,我是放在resources/mybatis文件下的陵霉。mybatis.type-aliases-package來指明和數(shù)據(jù)庫映射的實體的所在包。

經(jīng)過以上步驟伍绳,springboot就可以通過mybatis訪問數(shù)據(jù)庫來踊挠。

創(chuàng)建實體類

public class Account {
    private int id ;
    private String name ;
    private double money;

    getter..
    setter..

  }

數(shù)據(jù)訪問dao 層

接口:

public interface AccountMapper2 {
   int update( @Param("money") double money, @Param("id") int  id);
}

mapper:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.forezp.dao.AccountMapper2">
    <update id="update">
        UPDATE account set money=#{money} WHERE id=#{id}
    </update>
</mapper>

service層

@Service
public class AccountService2 {

    @Autowired
    AccountMapper2 accountMapper2;

    @Transactional
    public void transfer() throws RuntimeException{
        accountMapper2.update(90,1);//用戶1減10塊 用戶2加10塊
        int i=1/0;
        accountMapper2.update(110,2);
    }
}

@Transactional,聲明事務冲杀,并設計一個轉賬方法效床,用戶1減10塊,用戶2加10塊权谁。在用戶1減10 剩檀,之后,拋出異常闯传,即用戶2加10塊錢不能執(zhí)行谨朝,當加注解@Transactional之后,兩個人的錢都沒有增減甥绿。當不加@Transactional字币,用戶1減了10,用戶2沒有增加共缕,即沒有操作用戶2 的數(shù)據(jù)洗出。可見@Transactional注解開啟了事物图谷。
結語

springboot 開啟事物很簡單翩活,只需要加一行注解就可以了,前提你用的是jdbctemplate, jpa, mybatis便贵,這種常見的orm菠镇。

源碼下載:https://github.com/forezp/SpringBootLearning

參考資料

managing-transactions

寫在最后

歡迎關注喜歡承璃、和點贊后續(xù)將推出更多的spring cloud教程利耍,敬請期待。
歡迎關注我的微信公眾號獲取更多更全的學習資源,視頻資料隘梨,技術干貨程癌!

歡迎掃碼關注

公眾號回復“學習”,拉你進程序員技術討論群轴猎,干貨資源第一時間分享嵌莉。

公眾號回復“視頻”,領取800GJava視頻學習資源捻脖。

java學習全套

820G資源

公眾號回復“全棧”锐峭,領取1T前端Java郎仆,產(chǎn)品經(jīng)理只祠,微信小程序兜蠕,Python等資源合集大放送扰肌。

全棧資料

接近1T資源

公眾號回復“慕課”,領取1T慕課實戰(zhàn)學習資源熊杨。

慕課實戰(zhàn)大全

1061G資源

公眾號回復“實戰(zhàn)”曙旭,領取750G項目實戰(zhàn)學習資源。

前后端實戰(zhàn)項目

750實戰(zhàn)資源

公眾號回復“面試”晶府,領取8G面試實戰(zhàn)學習資源桂躏。

JAVA面試實戰(zhàn)視頻

8G面試資源

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市川陆,隨后出現(xiàn)的幾起案子剂习,更是在濱河造成了極大的恐慌,老刑警劉巖较沪,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鳞绕,死亡現(xiàn)場離奇詭異,居然都是意外死亡尸曼,警方通過查閱死者的電腦和手機们何,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來控轿,“玉大人冤竹,你說我怎么就攤上這事〔缟洌” “怎么了鹦蠕?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長在抛。 經(jīng)常有香客問我钟病,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任档悠,我火速辦了婚禮廊鸥,結果婚禮上,老公的妹妹穿的比我還像新娘辖所。我一直安慰自己惰说,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布缘回。 她就那樣靜靜地躺著吆视,像睡著了一般。 火紅的嫁衣襯著肌膚如雪酥宴。 梳的紋絲不亂的頭發(fā)上啦吧,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音拙寡,去河邊找鬼授滓。 笑死,一個胖子當著我的面吹牛肆糕,可吹牛的內容都是我干的般堆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼诚啃,長吁一口氣:“原來是場噩夢啊……” “哼淮摔!你這毒婦竟也來了?” 一聲冷哼從身側響起始赎,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤和橙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后造垛,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體魔招,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年筋搏,在試婚紗的時候發(fā)現(xiàn)自己被綠了仆百。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡奔脐,死狀恐怖俄周,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情髓迎,我是刑警寧澤峦朗,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站排龄,受9級特大地震影響波势,放射性物質發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一尺铣、第九天 我趴在偏房一處隱蔽的房頂上張望拴曲。 院中可真熱鬧,春花似錦凛忿、人聲如沸澈灼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叁熔。三九已至,卻和暖如春床牧,著一層夾襖步出監(jiān)牢的瞬間荣回,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工戈咳, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留心软,地道東北人。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓除秀,卻偏偏與公主長得像糯累,于是被迫代替她去往敵國和親算利。 傳聞我的和親對象是個殘疾皇子册踩,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內容