最初の質問: 注釈付きの結果セットではなく、1 つの 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);
すべての「保存」手順からメッセージを返しているため、ユーザーに応答を返すことができます:「ユーザーは正常に保存されました」、「ユーザーの保存中にエラーが発生しました」、「このユーザーを保存する権限がありません」など。結果セットを返すことで問題が解決することはわかっていますが、すべての手順を変更したくないだけです!
2 番目の質問:複数の 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;
}
}
ありがとう!