Spring 硬编码数据库中的引导更新字段

Spring Boot update field in database hardcoded

我的存储库中有这个

@Transactional
@Modifying
@Query(value = "UPDATE pengajuan u set u.status_approval ='Komite' where u.id_pengajuan =:idPengajuan",
        nativeQuery = true)
void updateStatusPengajuan(@Param("statusApproval") String statusApproval, @Param("idPengajuan") Integer idPengajuan);

我想通过 'idPengajuan'

将 status_approval 设置为 'Komite'

现在我的服务中有了这个

    public PengajuanK3 update(String statusApproval,int idPengajuan){
    return pengajuanK3Repository.updateStatusPengajuan(statusApproval, idPengajuan);
}

我有点困惑我如何在服务中调用存储库,因为在存储库中是 void 类型。

您使用的查询总是将 status_approval 设置为 Komite。从这个意义上说,您不需要在存储库更新方法中传递参数。一切都很好。

但是如果你想从 'Komite' 以外的参数动态更新 status_approval 然后这样做:

存储库:

@Transactional
@Modifying
@Query(value = "UPDATE pengajuan u set u.status_approval =:statusApproval where u.id_pengajuan =:idPengajuan",
    nativeQuery = true)
void updateStatusPengajuan(@Param("statusApproval") String statusApproval, 
@Param("idPengajuan") Integer idPengajuan);

并在您的服务中将 return 类型更改为 void 并删除 return.

 public void update(String statusApproval,int idPengajuan){
     pengajuanK3Repository.updateStatusPengajuan(statusApproval,idPengajuan);
}

在您的控制器中,调用更新方法,例如:

service.update('Komite', 1);

我更喜欢这种方式而不是硬编码,因为将来如果您需要将 status_approval 设置为其他值,您可以通过以下方式完成:

service.update('othervalues', 1);