Java MyBatis appel de procédure stockée avec des paramètres
Première question:
Je suis en train d'essayer de revenir un paramètre de SORTIE et non pas un jeu de résultats avec des annotations. Tout d'abord, est-il même possible? Si elle l'est, comment pourrait-on faire cela?
MyBatis: 3.0.6
Base de données: SQL Server 2008
Voici un exemple de la syntaxe de mon appel de méthode dans la 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);
Je suis de retour un message de toutes de mes "sauver" des procédures et pour que je puisse retourner une réponse à l'utilisateur: l'Utilisateur "enregistrer avec succès","Erreur lors de l'enregistrement de l'utilisateur","Vous n'avez pas l'autorisation d'enregistrer cet utilisateur", etc. Je sais que le retour d'un jeu de résultats permettra de résoudre le problème, c'est juste que je ne veux pas changer tous mes interventions!
Deuxième question: Est-il possible de retourner un "SaveProcedureResponse" peuplée de plusieurs paramètres? Par exemple:
@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);
Où le bean ressemble à ceci:
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;
}
}
Merci!
OriginalL'auteur snoozy | 2012-02-09
Vous devez vous connecter pour publier un commentaire.
err, sorta. Le Mappeur de ne pas
return
les paramètres de sortie, mais vous pouvez obtenir Mybatis pour les mettre sur le paramètre de l'objet, ou de les mettre dans une carte comme cette.Donc donné un simple objet java avec des getters et setters pour tous les champs. Après un appel à la mappeur, les paramètres de sortie sera fixée sur l'objet.
Afin d'obtenir les paramètres de sortie, il devrait ressembler à quelque chose comme ça.
C'est un peu dur à expliquer, cela fait-il sens?
La même chose devrait travailler avec les annotations. Je viens de copier un code et a changé de nom, je ne voulais pas que dans l'annotation, sélectionnez.
OriginalL'auteur Andy
À l'aide de MyBatis-Printemps annotations, écrire votre code comme celui-ci.
Les paramètres sont peuplées par nous dans le code appelant. Les paramètres de SORTIE sont peuplées par la couche d'accès aux données, et sont présents dans les params de l'objet après avoir invoqué le mappeur.
Inspiré par ce post: http://ibatis.10938.n7.nabble.com/IBatis-3-0-beta-10-annotations-stored-procedures-td7806.html
OriginalL'auteur Adam