Вызов хранимой процедуры 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;
}
}
Спасибо!