pom文件中添加依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <optional>true</optional>
</dependency>
<!-- mysql-connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.32</version>
</dependency>
实现层
@Service
public class AccountServiceImpl implements AccountService {
@Autowired
private AccountMapper accountMapper;
@Transactional //开启事务
@Override
public boolean transfer(String source, String target, BigDecimal money) {
boolean isOk=false;
//获取汇款方,源账户
QueryWrapper<Account> wrapper1 = new QueryWrapper<Account>();
wrapper1.eq("name",source);
Account sourcePerson = accountMapper.selectOne(wrapper1);
//获取收款方,目标账户
QueryWrapper<Account> wrapper2 = new QueryWrapper<Account>();
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 && b > 0){
isOk = true;
}
return isOk;
}
}
service接口
public interface AccountService {
/**
* 转账
* @param source 源账户
* @param target 目标账户
* @param money 转账金额
* @return
*/
boolean transfer(String source, String target, BigDecimal money);
}
controller层
@RestController
public class AccountController {
@Autowired
private AccountService accountService;
@RequestMapping("/test")
public String transfer(){
boolean b = accountService.transfer("A", "B", BigDecimal.valueOf(700));
return b ? "转账成功" : "转账失败";
}
}