2010-05-26 11 views
6

Załóżmy, że mam zapytanie getUser z dwoma parametrami - userName i hasłem. Chciałbym, aby metoda odwzorowania wyglądała następująco:Metoda mapowania wielu parametrów iBatis

public UserBean getUser(String userName, String password); 

Czy mogę coś takiego osiągnąć? A może powinienem przekazać moją mapę metody mapperów parametrów (i trochę parametruMap w moim programie odwzorowującym xml)?

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

Czekam z niecierpliwością na wskazówki i wyjaśnienia.

Odpowiedz

9

Bez specjalnej konfiguracji można odnieść się do pierwszego i drugiego parametru odpowiednio jako # {1} i # {2}.

Jeśli chcesz nazwać parametry, zamiast odnosić się do nich numerycznie, wykonaj następujące czynności: W odwzorowaniu XML dla instrukcji SELECT ustaw parametr parameter = "map", aw pliku interfejsu dodaj parametry za pomocą @Param. Na przykład: public UserBean getUser (@Param ("nazwa_użytkownika" String nazwa_użytkownika, @Param ("hasło") Hasło ciągu) pozwala na odwołanie się do nazwy użytkownika i hasła w mapowaniu XML jako # {nazwa_użytkownika #} i # {hasło}, odpowiednio

+0

bingo! Tego właśnie szukałem :) dziękuję bardzo :) Działa idealnie :) – jjczopek

1

Nie należy zmieniać podpisu metody DAO, jedynym problemem, który należy wziąć pod uwagę, jest sposób budowania mapowania. iBatis obsługuje tylko jeden parametr wejściowy i musisz zdecydować o klasie (atrybut parameterType), aby spakować dwa oryginalne parametry w jednym.

W tym scenariuszu to polubisz (między innymi opcjami) umieścić dwa parametry w Map (HashMap, typowo), lub (jeśli parametry odpowiadają właściwości klasy UserBean) przechodzą obojętne UserBean z tych dwóch właściwości określonych.

W obu przypadkach pakowanie (budowanie HashMap lub dummy UserBean, które posiadają dwa parametry) będzie wykonane wewnątrz metody public UserBean getUser(String userName, String password).

+0

Dziękuję za odpowiedź Nie muszę zmieniać moich metod DAO - co chciałem wiedzieć (ogólnie) czy iBatis obsługuje wiele parametrów w metodach interfejsu mapperów :) – jjczopek

Powiązane problemy