MYSQL事务的传播行为看这一篇就够了

B、事务的传播行为
1. propagation_required(默认)
需要事务,默认的传播行为,如果当前存在事务,就沿用当前事务
否则新建一个事务运行子方法
即只要大方法里面有事务,小方法即使没有事务,也会用大事务的
说明都在沿用当前存在的事务,
2. propagation_required_new(用于子方法)
无论当前事务是否存在,都会创建新事物运行方法
这样新事务就会拥有新的锁和新的事务隔离级别,与当前事务互相独立
2. propagation_nested(用户子方法)
在当前方法调用子方法时,如果子方法发生异常,并且被捕获的情况下
只回滚子方法执行的SQL,而不回滚当前方法执行的事务

C、 测试传播行为

1. 首先调整Springboot日志级别,调到Debug模式

在yml文件中

logging:
    config: classpath:conf/logback-dev.xml
    level:
        root: debug
2. 在说事务的传播行为的时候,我们先看这个
class  B(){
    void methodB(){
        doSomething..........
    }  
}


class  A(){
    void methodA(){
    	dosomething.....
        void methodB(){
               dosomething.......
        }
    }
}
 Class B 的 methodB()方法如下:
 
 public MyRedisDO insert(MyRedisDO myRedisDO) {
        myRedisMapper.insert(myRedisDO);
        return myRedisDO;
    }
Class  A 的methodA()方法

  public int insert(List<MyRedisDO> myRedisDOList) {
        int count = 0;
        MyRedisDO jihe = new MyRedisDO();
        jihe.setName("这是集合插入的");
        jihe = myRedisService.insert(jihe);
            for (MyRedisDO myRedisDO : myRedisDOList) {
                MyRedisDO myRedisDO1 = myRedisService.insert(myRedisDO);
                if (myRedisDO1 != null) {
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值