Java 在Spring中的存储过程中传递参数

Java 在Spring中的存储过程中传递参数,java,spring,spring-boot,Java,Spring,Spring Boot,我的sql数据库中有一个存储过程,我想使用@procedure注释从带有spring的java程序调用它。到目前为止还不错 我用@ProcedureprocedureName=my_过程调用该过程。问题是我想在过程中传递两个参数 有没有办法使用@Procedure注释来实现这一点 多谢各位 下面是一篇文章,这篇文章可能会有所帮助 首先,您需要在实体上声明过程: @NamedStoredProcedureQueries({ @NamedStoredProcedureQuery(

我的sql数据库中有一个存储过程,我想使用@procedure注释从带有spring的java程序调用它。到目前为止还不错

我用@ProcedureprocedureName=my_过程调用该过程。问题是我想在过程中传递两个参数

有没有办法使用@Procedure注释来实现这一点

多谢各位

下面是一篇文章,这篇文章可能会有所帮助

首先,您需要在实体上声明过程:

@NamedStoredProcedureQueries({ 
    @NamedStoredProcedureQuery(
        name = "my_procedure", 
        procedureName = "schema.my_procedure", 
        parameters = { 
            @StoredProcedureParameter(
                mode = ParameterMode.IN, 
                name = "first", 
                type = String.class),
            @StoredProcedureParameter(
                mode = ParameterMode.IN, 
                name = "second", 
                type = String.class) 
            },
            @StoredProcedureParameter(
                mode = ParameterMode.OUT, 
                name = "result", 
                type = Long.class) 
            }
    ) 
})
第二,在您的存储库中引用它

@Procedure(name = "my_procedure")
long getResult(@Param("first") String first, @Param("second") String second);

好的,这是解决方案

@如果名称相同,则过程注释可用于将方法与存储过程映射,如果方法变量是相同类型的,则将其映射到过程参数足够智能。但是,要将更改提交到数据库,必须使用事务性注释。 前


上述代码将从db调用过程MyProcedureName,并将par1和par2映射到MyProcedureName参数1和参数2。

谢谢您的回答。我已经读过这些文章了。我不想使用NamedStoredProcess。我现在做的是:@Procedure void myProcedureNameint par1,int par2;奇怪的是,如果我使用par1中已经存在的主键,我会得到一个重复主键的错误。但是如果我的数据库中不存在主键,则不会写入它。这就像代码无法提交查询..我从来没有自己做过,但是根据-@Param注释应该可以。在数据库过程中使用参数名称。你试过这种方法吗?
@Procedure
@Transactional
void MyProcedureName(Integer par1 , Integer par2);