第一个问题: 我试图返回一个 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);
我正在从我的所有“保存”过程中返回一条消息,因此我可以向用户返回一条响应:“用户保存成功”、“保存用户错误”、“您无权保存此用户”等。我知道返回结果集会解决问题,只是我不想更改所有程序!
第二个问题:是否可以返回由多个 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);
bean 看起来像这样:
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;
}
}
谢谢!