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