有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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) 个答案

  1. # 1 楼答案

    您可以使用@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参数的方法