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

时间:2016-06-07 22:36:44

标签: java sql procedure jdbi

JDBI对调用过程有@SqlCall注释,但此时此注释标记的方法只能返回nullOutParameters

所以现在我们可以通过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();
}

那么有没有人有一个很好的方法来获取输出参数?

1 个答案:

答案 0 :(得分:2)

您可以使用<tr> <span class="gramm-problem" data-grayt-phrase="Content Content"> <td align="left" bgcolor="#e6e1ce" height="30" id="table_column1" valign="middle"> <span style="font-family: verdana,geneva,sans-serif,arial;">Content</span> </td> <td align="left" bgcolor="#f8f9f3" height="30" id="table_column2" valign="middle"> <span style="font-family: verdana,geneva,sans-serif,arial; ">Content</span> </td> </span> <td align="left" bgcolor="#e6e1ce" height="30" id="table_column1_2" valign="middle"> <span style="font-family: verdana,geneva,sans-serif,arial;">Content</span> </td> </tr> 注释注册out参数:

@OutParameter

@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); 类型具有按名称获取每个out-parameter的方法。