Java JDBI支持带out参数的存储过程

Java JDBI支持带out参数的存储过程,java,sql,procedure,jdbi,Java,Sql,Procedure,Jdbi,JDBI为调用过程提供了@SqlCall注释,但目前该注释标记的方法只能返回null或OutParameters 那么现在我们是否可以通过OutParameters调用带有out参数的过程来获取out参数,如下所示: CREATE PROCEDURE get_total (IN num1 INT, IN num2 INT, OUT result INT) BEGIN SELECT num1 + num2 INTO result; END; 所以现在我的临时解决方案是: @SqlCall

JDBI为调用过程提供了
@SqlCall
注释,但目前该注释标记的方法只能返回
null
OutParameters

那么现在我们是否可以通过
OutParameters
调用带有out参数的过程来获取out参数,如下所示:

CREATE PROCEDURE get_total (IN num1 INT, IN num2 INT, OUT result INT) 
BEGIN
   SELECT num1 + num2 INTO result;
END;
所以现在我的临时解决方案是:

@SqlCall("call get_total(:num1, :num2, @result)")
public abstract void getTotal(@Bind("num1") int num1, @Bind("num2") int num2);

@SqlQuery("SELECT @result AS result")
public abstract int getQueryTotal();

/**
 * call procedure firstly, then query the out parameter as a variable.
 */
public int getCalculateTotal(int num1, int num2) {
   getTotal(1, 2);
   return getQueryTotal();
}

那么,有没有人有一个很好的方法来获取out参数呢?

您可以使用
@OutParameter
注释注册一个out参数:

@SqlCall("call get_total(:num1, :num2, :result)")
@OutParameter(name="result", sqlType=Types.INTEGER)
public abstract OutParameters getTotal(@Bind("num1") int num1, @Bind("num2") int num2);

OutParameters
类型具有按名称获取每个out参数的方法。

这在JDBIv3中,对吗?我在JDBIv2(也称DropWizard中的内容)中找不到这样做的方法,因为它显然不适合编辑:在JDBIv2中,没有使用此语法获取out参数的方法@在您的问题之后,OutParameter被添加到JDBIv3(预发布)以解决此问题。抱歉——我写错了示例@SqlCall可以返回void或OutParameters对象。将编辑我的答案。如果没有@OutParameter通知(即在JDBIv2中询问问题),OutParameters对象是否包含任何结果?