2010-05-26 10 views
6

Nehmen wir an, ich habe eine Abfrage getUser mit zwei Parametern - Benutzername und Passwort. Ich hätte gerne eine Mapper-Methode, die wie folgt aussieht:iBatis Multiple Parameter Mapper-Methode

public UserBean getUser(String userName, String password); 

Gibt es eine Möglichkeit, dass ich so etwas erreichen kann? Oder vielleicht sollte ich meine mapper method map von Parametern (und einige parameterMap in meinem XML-Mapper) übergeben?

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

Ich freue mich auf ein paar Hinweise und Erklärungen.

Antwort

9

Ohne spezielle Konfiguration können Sie den ersten und zweiten Parameter als # {1} und # {2} bezeichnen.

Wenn Sie die Parameter benennen möchten, anstatt sie numerisch zu verwenden, gehen Sie folgendermaßen vor: Setzen Sie in der XML-Zuordnung für Ihre SELECT-Anweisung parameterType = "map" und notieren Sie in der Schnittstellendatei die Parameter mit @Param. Mit dem öffentlichen UserBean-getUser (@Param ("user_name" String userName, @Param ("password") String password) können Sie beispielsweise den Benutzernamen und das Passwort in der XML-Zuordnung als # {user_name #} und # {passwort}, bzw.

+0

Bingo! Das ist, was ich gesucht habe :) Vielen Dank :) Funktioniert perfekt :) – jjczopek

1

Sie sollten die Signatur Ihrer DAO-Methode nicht ändern. Das einzige zu berücksichtigende Problem ist, wie Sie Ihr Mapping erstellen. iBatis unterstützt nur einen Eingabeparameter und Sie müssen Ihre Klasse (Attribut parameterType) festlegen, um Ihre zwei ursprünglichen Parameter in einem zu verpacken.

In diesem Szenario Sie könnte (neben anderen Optionen) legt die beiden Parameter in einem Map (HashMap, in der Regel), oder (wenn die Parameter Eigenschaften der UserBean Klasse entsprechen) eine Dummy UserBean mit diesen beiden Eigenschaften bestehen.

In beiden Fällen würde das Packen (Erstellen der HashMap oder der Dummy UserBean, die die zwei Parameter enthalten) innerhalb Ihrer public UserBean getUser(String userName, String password) Methode erfolgen.

+0

Danke für Ihre Antwort Ich muss meine DAO-Methoden nicht ändern - was ich wissen wollte (im Allgemeinen) iBatis unterstützt mehrere Parameter in Mapper-Interface-Methoden :) – jjczopek