Mybatis! Übergeben Sie mehrere Parameter an Mapper DAO
-
26-10-2019 - |
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.
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.