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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top