一、在方法(函数)上加入注解:@Transactional
![](https://i-blog.csdnimg.cn/blog_migrate/8bff69ae1a211b31afb6b6e0a56c93a4.png)
//开启事务
@Transactional
@Override
public boolean transfer(String source, String target, BigDecimal money) {
boolean isOk=false;
//获取汇款方,源账户
QueryWrapper<Account> wrapper1=new QueryWrapper<>();
wrapper1.eq("name",source);
Account sourcePerson=accountMapper.selectOne(wrapper1);
//获取收款方,目标账户
QueryWrapper<Account> wrapper2=new QueryWrapper<>();
wrapper2.eq("name",target);
Account targetPerson=accountMapper.selectOne(wrapper2);
//转账
//源账户去除700
sourcePerson.setMoney(sourcePerson.getMoney().subtract(money));//进行十进制的减法
int a=accountMapper.updateById(sourcePerson);
//模拟异常
int x=10/0;
//目标账户存入700
targetPerson.setMoney(targetPerson.getMoney().add(money));//进行十进制的加法
int b=accountMapper.updateById(targetPerson);
if(a>0){
isOk=true;
}
return false;
}