MyBatis! Passando parametro multiplo per Mapper DAO
-
26-10-2019 - |
Domanda
Sto provando a trasmettere parametri multipli alla funzione Mapper definito nella realizzazione DAO, ma in grado di inviare più di 1 parametro nel caso in cui il parametro non sono titolare di qualsiasi classe. Voglio dire come posso modificare il seguente codice -
obj.getName(int a, int b);
In applicazione DAO
public void getAllName() throws PersistenceException {
SqlSession session = sf.openSession();
try {
session.selectList("getNames");
} finally {
session.close();
}
}
Voglio inviare un e b per getNames query.
Grazie in anticipo.
Soluzione
Se si utilizza implementazione DAO allora si può fare questo usando un HashMap
. Basta aggiungere la coppia chiave-valore in HashMap
e aggiungerlo nella chiamata di funzione e si può accedere nel mapper.xml
con "chiave".
Altri suggerimenti
Usa un Mapper.
interface Mapper
{
@Select( " select names from names_table where a = #{fieldA} and b = #{fieldB}" )
List<String> getNames( @Param("fieldA") String fieldA, @Param("fieldB") String fieldB)
}
Il tag @param consente di specificare ciò che è possibile utilizzare per accedere al parametro nella mappa sql. Questo esempio mostra un tag @Select, ma funziona lo stesso come XML.
quindi modificare il codice,
public List<String> getAllName() throws PersistenceException {
SqlSession session = sf.openSession();
try
{
Mapper mapper = session.getMapper(Mapper.class);
return mapper.getNames("a","b");
} finally {
session.close();
}
}
Leggere il manuale d'uso href="http://code.google.com/p/mybatis/downloads/detail?name=MyBatis-3-User-Guide.pdf" per ulteriori informazioni.