spring boot 中事物的使用

2022-02-24 17:13:18 字數 2359 閱讀 1152

事務,通俗的說就是,同時做多個事,要麼全做,要麼不做,也是其特性。舉個例子來說,好比你在某寶、某東、某多上購物,在你提交訂單的時候,庫存也會相應減少,不可能是錢付了,庫存不減少,或者庫存減少了,錢沒扣,不是尷尬了。

沒描述清楚?那好,我們結合例項,通過**實現,我想往資料庫加兩個學生,如果增加乙個失敗了,便不再增加,要麼就都增加。

ps:此處沿用上篇文章的**,還請各位同學注意。

1、建立乙個service

建立乙個名為studentservice的類,用來新增兩個學生,示例**如下:

package

com.rongrong.springboot.demo.student;

import

org.springframework.beans.factory.annotation.autowired;

import

org.springframework.stereotype.service;

/***

@author

rongrong

* @version

1.0 * @description:

* @date 2020/1/1 22:21 */

@service

public

class

studentservice

}

2、編寫介面服務

介面實現增加兩個學生,示例**如下:

@autowired

studentservice studentservice;

/*** 插入兩個學生資訊

*/

public

void

inserttwo()

啟動服務,用postman,呼叫介面服務,去資料庫檢視新增學生資訊存在,證明介面實現成功,如下圖:

接著我們來模擬,資料新增失敗情況,修改新增兩個學生的方法,將student2的名字改成500字元,**示例如下:

package

com.rongrong.springboot.demo.student;

import

org.springframework.beans.factory.annotation.autowired;

import

org.springframework.stereotype.service;

/***

@author

rongrong

* @version

1.0 * @description:

* @date 2020/1/1 22:21 */

@service

public

class

studentservice

}

啟動專案,再次呼叫介面,這次真的報錯了,先看控制台結果如下圖:

因為name欄位傳入值太長,導致報錯,再來看我們的資料庫,是否插入資料了呢,

student1成功插入資料了,但是student2並沒有,這好比說,你把東西拿到手了,賣方沒收到錢,或者你付了錢,沒收到貨,顯然兩種情況在現實中都是不允許的,那麼我們該怎麼解決這樣的情況呢

我們請出事務大神。來搞定這個事,具體修改**示例如下:

package

com.rongrong.springboot.demo.student;

import

org.springframework.beans.factory.annotation.autowired;

import

org.springframework.stereotype.service;

import

org.springframework.transaction.annotation.transactional;

/***

@author

rongrong

* @version

1.0 * @description:

* @date 2020/1/1 22:21 */

@service

public

class

studentservice

}

再次啟動專案,呼叫介面服務,我們再看資料庫,會看到沒資料插入,控制台還會報剛才的錯,這就很好的實現了事務的特性,要麼做,要麼不做到此,關於事務的介紹和使用介紹完畢,有興趣的同學可以自行嘗試!

SpringBoot中Profile的使用(七)

檔案結構 1.先寫2個properties 2.模擬乙個實體類 data allargsconstructor public class datasource 3.編寫各自的config 其中 profile註解是標明該profile 側寫 的限定名 configuration propertyso...

Springboot中swagger的使用

需要匯入的依賴 io.springfoxgroupid springfox swagger2artifactid 2.7.0version dependency io.springfoxgroupid springfox swagger uiartifactid 2.7.0version depen...

SpringBoot事物無效

今天發現使用者註冊的service的事務並沒有起到作用,再丟擲乙個runtimeexception後,並沒有發生回滾,下面是除錯步驟 1 檢查資料庫的引擎是否是innodb 2 啟動類上是否加入 enabletransactionmanagement註解 3 是否在方法上加入 transaction...