0

我需要使用 requestbody 多次执行一个过程。现在,我正在使用 for 循环来做到这一点,但这不是一个好方法。例如,当一个请求失败时,捕获该请求是一个问题。请参阅示例用法。

用for循环实现存储过程;

**Controller**
public void runSP(
   @RequestBody List<IdNoteModel> idNotes
){
   getService().runSP(idNotes);
}

**Service**
public void runSP(List<IdNoteModel> idNotes){
   for (IdNoteModel idNote : idNotes){
      getRepository().runSP(idNote);
   }
}

**Repository**
@Query(nativeQuery = true, value = "EXECUTE PROCEDURE SP_RUN_ID_NOTE(:id, :note)")
void runSP(Long id, String note);

有没有更好的方法来多次运行存储过程?或者你有什么想法来捕捉失败的请求?

4

2 回答 2

2

SP_RUN_ID_NOTE您可以使用一个存储过程,在该存储过程中,您可以使用游标多次执行该过程 ( )。在该存储过程中,您还可以使用回滚来处理失败。在上述情况下,您可以将请求正文输入存储在表中,然后在从该表中获取输入行时调用过程。

于 2020-02-18T09:37:48.490 回答
0

您可以为此目的使用@Retryable ,也可以使用@Recover捕获异常和记录请求

于 2020-02-18T09:27:32.603 回答