Вызов хранимой процедуры Java MyBatis с параметрами OUT

Первый вопрос: Я пытаюсь вернуть один параметр OUT, а не набор результатов с аннотациями. Во-первых, возможно ли это? Если это так, как можно это сделать?

MyBatis: 3.0.6

База данных: SQL Server 2008

Вот пример синтаксиса моего вызова метода в UserDAO:

@Select(value= "{ CALL saveUser( "
        + "#{userId, mode=IN, jdbcType=INTEGER},"
        + "#{firstname, mode=IN, jdbcType=VARCHAR},"
        + "#{lastname, mode=IN, jdbcType=VARCHAR},"
        + "#{message, mode=OUT, jdbcType=VARCHAR}"
        + ")}")
@Options(statementType=StatementType.CALLABLE)
public String saveUser(
        @Param("userId") int userId,
        @Param("firstname") String firstname,
        @Param("lastname") String lastname);

Я возвращаю сообщение от всех моих процедур сохранения, и поэтому я могу вернуть ответ пользователю: «Пользователь успешно сохранен», «Ошибка при сохранении пользователя», «У вас нет разрешения на сохранение этого пользователя» и т. Д. Я знаю, что возвращение набора результатов решит проблему, просто я не хочу менять все мои процедуры!

Второй вопрос: Можно ли вернуть «SaveProcedureResponse», заполненный из нескольких параметров OUT? Например:

@Select(value= "{ CALL saveUser( "
        + "#{userId, mode=IN, jdbcType=INTEGER},"
        + "#{firstname, mode=IN, jdbcType=VARCHAR},"
        + "#{lastname, mode=IN, jdbcType=VARCHAR},"
        + "#{message, mode=OUT, jdbcType=VARCHAR},"
        + "#{status, mode=OUT, jdbcType=VARCHAR},"
        + "#{returnCode, mode=OUT, jdbcType=INTEGER}"
        + ")}")
@Options(statementType=StatementType.CALLABLE)
public SaveProcedureResponse saveUser(
        @Param("userId") int userId,
        @Param("firstname") String firstname,
        @Param("lastname") String lastname);

Где боб выглядит так:

public class SaveProcedureResponse {
    private String message;
    private String status;
    private int returnCode;

    public SaveProcedureResponse(String message, String status, int returnCode) {
        this.message = message;
        this.status = status;
        this.returnCode = returnCode;
    }
}

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос