记录、避免遗忘
@Autowired
private UserInfoPOMapper userInfoPOMapper;
// 开启事务(必须有)
@Transactional
@Override
public BusinessResponse multiTableRollBack() {
// A数据库-插入一条数据
BusinessResponse<UserAccountPO> testA = insertA();
if (!testA.success()) {
return AuthBusinessResponse.fail(testA.getRt_code(), testA.getRt_msg());
}
// B数据库-插入一条数据
BusinessResponse<UserInfoPO> testC = insertB();
if (!testC.success()) {
return AuthBusinessResponse.fail(testC.getRt_code(), testC.getRt_msg());
}
// 查询成功
BusinessResponse<UserAccountPO> testB = queryASuccess();
if (!testB.success()) {
return AuthBusinessResponse.fail(testB.getRt_code(), testB.getRt_msg());
}
// 查询失败
BusinessResponse<UserAccountPO> testD = queryAError();
if (!testD.success()) {
// 手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return AuthBusinessResponse.fail(testD.getRt_code(), testD.getRt_msg());
}
return BusinessResponse.ok(null);
}
/**
* A数据库-插入一条数据
*/
// @Transactional(可有可无)
public BusinessResponse<UserAccountPO> insertA() {
UserAccountPO userAccountPO = new UserAccountPO();
userAccountPO.setLoginName("abc123");
userAccountPO.setLoginPassword("123456");
int i = userAccountPOMapper.insertSelective(userAccountPO);
if (i != 1) {
return BusinessResponse.fail(10000, "插入失败");
}
return BusinessResponse.ok(null);
}
/**
* B数据库-插入一条数据
*/
// @Transactional(可有可无)
public BusinessResponse<UserInfoPO> insertB() {
UserInfoPO userInfoPO = new UserInfoPO();
userInfoPO.setAccountId(666);
userInfoPO.setNickname("昵称");
int i = userInfoPOMapper.insertSelective(userInfoPO);
if (i != 1) {
return BusinessResponse.fail(10000, "插入失败");
}
return BusinessResponse.ok(null);
}
/**
* 查询一条[存在的]数据
*/
// @Transactional(可有可无)
public BusinessResponse<UserAccountPO> queryASuccess() {
UserAccountPO userAccountPO = userAccountPOMapper.selectByPrimaryKey(2);
if (ObjectUtils.isEmpty(userAccountPO)) {
return BusinessResponse.fail(20000, "查询不到");
}
return BusinessResponse.ok(userAccountPO);
}
/**
* 查询一条[不存在的]数据
*/
// @Transactional(可有可无)
public BusinessResponse<UserAccountPO> queryAError() {
UserAccountPO userAccountPO = userAccountPOMapper.selectByPrimaryKey(6);
if (ObjectUtils.isEmpty(userAccountPO)) {
return BusinessResponse.fail(20000, "查询不到");
}
return BusinessResponse.ok(userAccountPO);
}