事務,通俗的說就是,同時做多個事,要麼全做,要麼不做,也是其特性。舉個例子來說,好比你在某寶、某東、某多上購物,在你提交訂單的時候,庫存也會相應減少,不可能是錢付了,庫存不減少,或者庫存減少了,錢沒扣,不是尷尬了。
沒描述清楚?那好,我們結合例項,通過**實現,我想往資料庫加兩個學生,如果增加乙個失敗了,便不再增加,要麼就都增加。
ps:此處沿用上篇文章的**,還請各位同學注意。
1、建立乙個service
建立乙個名為studentservice的類,用來新增兩個學生,示例**如下:
package2、編寫介面服務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
}
介面實現增加兩個學生,示例**如下:
@autowired啟動服務,用postman,呼叫介面服務,去資料庫檢視新增學生資訊存在,證明介面實現成功,如下圖:studentservice studentservice;
/*** 插入兩個學生資訊
*/
public
void
inserttwo()
接著我們來模擬,資料新增失敗情況,修改新增兩個學生的方法,將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...