Frage

Ich versuche, mehrere Parameter an Mapper -Funktion zu senden, die in der DAO -Implementierung definiert wurden, aber nicht mehr als 1 Parameter senden kann, wenn der Parameter keine Klasse ist. Ich meine, wie kann ich den folgenden Code ändern.

obj.getName(int a, int b);

In der DAO -Implementierung

public void getAllName() throws PersistenceException {
        SqlSession session = sf.openSession();
        try {
            session.selectList("getNames");         
        } finally {
            session.close();
        }
    }

Ich möchte a und b an Fragen GetNames senden.

Danke im Voraus.

War es hilfreich?

Lösung

Wenn Sie die DAO -Implementierung verwenden, können Sie dies mit a tun HashMap. Fügen Sie einfach das Schlüsselwertpaar hinzu HashMap und fügen Sie es im Funktionsaufruf hinzu und Sie können in der mapper.xml Verwenden von "Schlüssel".

Andere Tipps

Verwenden Sie einen 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)
}

Mit dem @Param -Tag können Sie angeben, was Sie zum Zugriff auf den Parameter in der SQL -Karte verwenden können. Dieses Beispiel zeigt ein @select -Tag, aber es funktioniert genauso wie XML.

Dann ändern Sie Ihren Code,

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();
        }
    }

Lies das Benutzerhandbuch für mehr Informationen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top