spring mybatis 事務 配置與使用

2021-08-14 18:32:01 字數 1565 閱讀 9257

一. springmvc註解事務

之前一直有用事務,但是之前都只算使用。今天有才有空深入了解一下事務的配置使用。本人比較懶(哈哈哈),就先從懶人比較中意的註解事務開始吧。

怕有新手上路,所以spring.xml 和spring-mvc.xml都放出來

spring-mvc.xml

<?xml version="1.0" encoding="utf-8"?>

spring.xml

<?xml version="1.0" encoding="utf-8"?>

然後在就是在service實現中新增註解了,在我這裡就是上面的 com.zm.transaction.service.impl.userserviceimpl類,

@transactional

有兩種用法:

(1)把這個註解放在類名稱上面了,這樣你配置的這個@transactional 對這個類中的所有public方法都起作用. 

(2)@transactional 方法方法名上,只對這個方法有作用,同樣必須是public的方法

我是使用在方法上註解的,並且使用了異常回滾。當insertuser成功時丟擲異常,不執行insertrole。但是查詢資料庫insertuser插入的資料也被回滾了。

//@service("userservice")沒有手動配置

public class userserviceimpl implements userservice

}

@transactional還有其他的功能

超時:

@transactional(timeout=30) //預設是30秒

異常回滾:

指定單一異常類:@transactional(rollbackfor=runtimeexception.class)

指定多個異常類:@transactional(rollbackfor=) 

該屬性用於設定需要進行回滾的異常類陣列,當方法中丟擲指定異常陣列中的異常時,則進行事務回滾。

正常的情況下也可以回滾:

transactionaspectsupport.currenttransactionstatus().setrollbackonly();

唯讀: 

@transactional(readonly=true) 

該屬性用於設定當前事務是否為唯讀事務,設定為true表示唯讀,false則表示可讀寫,預設值為false。

二.非註解事務配置

其實非註解事務只要在spring.xml裡把配置改一下就行了,重複的配置就不在展示了,下面是需要改動

<?xml version="1.0" encoding="utf-8"?>

用過一種再是用另一種是不是很快上手,我就寫這麼多了,如果有什麼錯誤歡迎批評指正。

spring mybatis事務不回滾

對spring,mybatis進行整合時發現事務不能進行回滾處理,上網查了很多資料依舊還沒解釋,很多都是說要丟擲乙個runtimeexception才能回滾的,但嘗試過多種還不能,如下 classpath jdbc.properties bolgservice bolgflowservice 檢視資...

spring mybatis純註解版事務開發。

package domain import dao.userdao import entity.user import org.springframework.beans.factory.annotation.autowired import org.springframework.stereoty...

spring mybatis讀寫分離

一 配置定義資料庫連線屬性 二 定義bean 三 事務定義 四 配置外掛程式 五 編寫動態資料來源類 public class dynamicdatasource extends abstractroutingdatasource setdefaulttargetdatasource writeda...