java - 是否有更好的方法来编写此代码,在插入表 X 后自动更新表 Y 和 Z?
问题描述
我是 Spring Boot 2 的新手。我正在为一家公司进行测试,我决定使用该框架,因为我也在 Udemy 学习 Java。
该任务是一个模拟银行平台的小型应用程序,我可以在其中创建受益人,向他们转账,并查看交易历史。我编写了代码来创建交易并自动更新所选受益人的余额以及在历史记录表中插入一条记录:
@PostMapping("/")
public Transaction addTransfer(@Valid @RequestBody Transaction transaction) {
if (!transactionRepository.hasBeneficiaryWithId(transaction.getBeneficiaryId())) {
throw new NotFoundException("Beneficiary does not exist");
}
Transaction newTransfer = transactionRepository.save(transaction);
try {
beneficiaryRepository.updateBeneficiaryBalance(newTransfer.getAmount(), newTransfer.getBeneficiaryId());
historyRepository.insertHistory(newTransfer.getId());
} catch (Exception e) {
System.out.println(e.getMessage());
}
return newTransfer;
}
我首先编写了一个自定义异常类来检查给定的受益人 ID 是否存在,然后,在保存交易后,它执行来自不同实体的两个不同存储库的代码。他们是:
@Modifying
@Query("UPDATE Beneficiary SET balance = ?1 WHERE id = ?2")
public Integer updateBeneficiaryBalance(double balance, int beneficiaryId);
和
@Modifying
@Query(value = "INSERT INTO histories (transfer_id) VALUES (?1)", nativeQuery = true)
public Integer insertHistory(int transferId);
我想知道写这样的东西的正确方法(如果有的话)。我不知道这是否只是最基本的方法或应该如何完成。
解决方案
推荐阅读
- javascript - 为什么 node-fetch 与 oauth2 身份验证有问题
- javascript - DP 解决方案未正确缓存 - 输入为 ~70 时出现超时错误
- python - 带有元组键的 msgpack 字典
- javascript - 为什么直接来自父组件的 onChange func 与通过组件的实例方法代理会导致不同的状态值?
- delphi - 如何使用 SynPdf 将新文本添加到先前添加的页面中
- python - 在python3中将十六进制字符串转换为字符
- go - 编写测试以检查运行时错误
- sql-server - 使用 EclipseLink、SQL Server 和 spring 数据进行分页
- javascript - 无法读取属性“createDocumentFragment”
- linux - 启动 ngnix.service 失败:未找到单元 ngnix.service