JDBI имеет @SqlCall
аннотация для процедуры вызова, но в настоящее время метод, отмеченный этой аннотацией, может возвращать только null
или OutParameters
.JDBI поддерживает хранимую процедуру с параметром out
Так что сейчас есть в любом случае мы можем получить из параметра через OutParameters
при вызове процедуры с из параметров, как показано ниже:
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();
}
Так есть ли у кого есть хороший способ получить параметры?
Это в JDBIv3 в порядке? Я не мог найти способ сделать это в JDBIv2 (так же, как в DropWizard) – cacsar
Так как это не подходит для редактирования, очевидно: в JDBIv2 нет способа получить параметры out с помощью этого синтаксиса. @OutParameter был добавлен в JDBIv3 (preerelease) после вашего вопроса для решения этой проблемы. – cacsar
Извинения. Я написал пример неправильно. @SqlCall может возвращать void или объект OutParameters. Изменит мой ответ. – qualidafial