Первый вопрос: Я пытаюсь вернуть один параметр 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;
}
}
Спасибо!