@Transactional初探

@Transactional(rollbackFor = Exception.class)

①如果使用@Transactional(rollbackFor = Exception.class),那么这个类里面的方法抛出异常,就会回滚,数据库数据也会回滚

②如果不配置rollbackFor,事务只会在遇到运行时异常的时候才会回滚,配置该字段,可以让事务在遇到非运行时异常也回滚

try catch捕获异常时使用@Transactional必须手动回滚

不然事物不起作用。

异常时需要手动回滚事物,不然第一条sql执行成功第二条执行失败
 @Transactional
    public void csTransactional() {
        try {

            UaD uaDeputyAccount=new UaD();
            uaDeputyAccount.setDeputyAccountId(789789798l);
            uaDeputyAccount.setDeputyAccountNumber("123456789");
            uaDeputyAccount.setStaffCode("123456789");
            uaD.insertSelective(uaDeputyAccount);

            int a=1/0;

            UaO uaOrganization=new UaO();
            uaOrganization.setOrgCode("123456789");
            uaO.insertSelective(uaOrganization);


        }catch (Exception e){
            //手动回滚
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            System.out.println(e.getMessage());
        }
    }

@Transactional(readOnly = true)

/**
     * 不加@Transactional(readOnly = true)
     * 第一个输出25
     * 修改数据库为26  在查输出26
     *
     * 加@Transactional(readOnly = true)
     * 第一个输出26
     * 修改数据库为27  在查输出26
     * readOnly = true 表示只能用作只读,如果操作里有增删改则会报错(org.springframework.dao.TransientDataAccessResourceException: )
     */
    @Transactional(readOnly = true)
    public void csTransactionalReadonly(){
        UaD uaDExample=new UaDeputyAccountExample();
        UaDeputyAccountExample.Criteria criteria = uaDeputyAccountExample.createCriteria();
        criteria.andDeputyAccountNumberEqualTo("zhusi");
        List<UaDe> uaDe = uaDeputyAccountMapper.selectByExample(uaDExample);
        System.out.println(uaDeputyAccountList.get(0).getRegionId());


        UaD uaDe2=new UaD();
        UaD.Criteria criteria2 = uaD.createCriteria();
        criteria2.andDeputyAccountNumberEqualTo("zhusi");
        List<UaD> uaDe = uaDMapper.selectByExample(uaDe2);
        System.out.println(uaDe.get(0).getRegionId());

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值