首页 > 解决方案 > 是否有更好的方法来编写此代码,在插入表 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);

我想知道写这样的东西的正确方法(如果有的话)。我不知道这是否只是最基本的方法或应该如何完成。

标签: javaspring-boot

解决方案


推荐阅读