iBatis metodo mappatore parametri multipli
Domanda
dire Let Ho un getUser
query con due parametri - username e password. Mi piacerebbe avere un metodo mapper cercando in questo modo:
public UserBean getUser(String userName, String password);
C'è un modo posso realizzare una cosa del genere? O forse dovrei passare il mio metodo mapper mappa di parametri (e un po 'nel mio parameterMap XML mapper)?
public UserBean getUser(Map<String, Object> paramMap);
Non vedo l'ora per alcuni suggerimenti e spiegazioni.
Soluzione
senza alcuna configurazione speciale, si può fare riferimento al primo e al secondo parametro come # {1} e # {2}, rispettivamente.
Se volete dare un nome i parametri, piuttosto che riferendosi a loro numericamente, effettuare le seguenti operazioni: Nella mappatura XML per la vostra istruzione SELECT, impostare tipoParametro = "mappa", e nel file di interfaccia, annotare i parametri con @ Param. Ad esempio, pubblica UserBean getUser (@ param ( "nome_utente" String username, @param ( "password") la password String); permetterebbe di fare riferimento al nome utente e password, nella mappatura XML, come # {user_name} e # # {Password}, ??rispettivamente.
Altri suggerimenti
Non dovrebbe cambiare la firma del metodo DAO, l'unico problema da considerare è come costruire la vostra mappatura. Supporto iBatis solo un parametro di input, e si deve decidere la classe (attributi parameterType
) di preparare le due parametri originali in uno.
In questo scenario si potrebbe (tra le altre opzioni) posizionare i due parametri in un Map
(HashMap
, in genere), o (se i parametri corrispondono alle proprietà della classe UserBean
) passare un UserBean
manichino con quei due proprietà impostate.
In entrambi i casi l'imballaggio (la costruzione del HashMap o UserBean manichino che detengono i due parametri) sarebbe stato fatto all'interno del vostro metodo di public UserBean getUser(String userName, String password)
.