第一个问题: 我试图返回一个OUT参数,而不是带注释的结果集。首先,这有可能吗?如果是这样,一个人会怎么做?带有OUT参数的Java MyBatis存储过程调用
的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);
我从返回的消息所有我的“保存”程序,所以我可以返回一个响应给用户:“用户保存成功”,“保存用户错误”,“你没有权限保存这个用户”等。我知道返回结果设置将解决问题,它只是我不想改变我的所有程序!
第二个问题:是否可以返回由多个OUT参数填充的“SaveProcedureResponse”?例如:
@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;
}
}
谢谢!
感谢您的答复!是的,我明白你如何用XML映射器来做到这一点,然而,我很好奇是否可以用纯注释做同样的事情? – snoozy 2012-02-10 05:28:38
同样应该使用注释。我只是复制了一些代码并更改了名称,我不想将它转换为注释选择。 – Andy 2012-02-10 13:42:08