2010-05-26 14 views
6

Supposons que j'ai une requête getUser avec deux paramètres - nom d'utilisateur et mot de passe. Je voudrais avoir une méthode mappeur qui ressemble à ceci:Méthode de mappeur de paramètres multiples iBatis

public UserBean getUser(String userName, String password); 

Est-il possible que je peux réaliser quelque chose comme ça? Ou peut-être que je devrais passer dans ma carte de méthode de mappeur de paramètres (et une certaine parameterMap dans mon mappeur xml)?

public UserBean getUser(Map<String, Object> paramMap); 

Je suis impatient de quelques conseils et explications.

Répondre

9

Sans configuration particulière, vous pouvez vous référer aux premier et deuxième paramètres respectivement # # 1 et # {2}. Si vous souhaitez nommer les paramètres, plutôt que d'y faire référence numériquement, procédez comme suit: Dans le mappage XML de votre instruction SELECT, définissez parameterType = "map" et dans le fichier d'interface, annotez les paramètres avec @Param. Par exemple, userBean getUser public (@Param ("nom_utilisateur" String nom_utilisateur, @Param ("mot de passe") Mot de passe chaîne) vous permet de vous référer au nom d'utilisateur et mot de passe, dans le mappage XML, comme # {nom_utilisateur #} et # {mot de passe}, respectivement

+0

bingo! C'est ce que je cherchais :) merci beaucoup :) Fonctionne parfaitement :) – jjczopek

1

Vous ne devriez pas changer la signature de votre méthode DAO, le seul problème à considérer est de savoir comment vous construisez votre mapping. iBatis prend en charge un seul paramètre d'entrée, et vous devez décider de votre classe (attribut parameterType) pour emballer vos deux paramètres d'origine en un.

Dans ce scénario, vous pourriez (entre autres options) placer les deux paramètres dans un Map (HashMap, généralement), ou (si les paramètres correspondent aux propriétés de la classe UserBean) passer un UserBean factice avec ces deux propriétés définies.

Dans les deux cas, l'empaquetage (construction du HashMap ou du UserBean fictif qui contient les deux paramètres) se fera dans votre méthode public UserBean getUser(String userName, String password).

+0

Je n'ai pas besoin de changer mes méthodes DAO - ce que je voulais savoir (en général) iBatis supporte plusieurs paramètres dans les méthodes de l'interface mapper :) – jjczopek