Mybatis! Passe paramètre multiple à Mapper DAO
-
26-10-2019 - |
Question
Je suis en train d'envoyer des paramètres multiples à la fonction Mapper défini dans la mise en œuvre de DAO, mais incapable d'envoyer plus de 1 paramètre dans le cas où le paramètre ne sont pas titulaire d'une classe. Je veux dire, comment puis-je modifier le code suivant -
obj.getName(int a, int b);
En application DAO
public void getAllName() throws PersistenceException {
SqlSession session = sf.openSession();
try {
session.selectList("getNames");
} finally {
session.close();
}
}
Je veux envoyer a et b à getNames de requête.
Merci à l'avance.
La solution
Si vous utilisez la mise en œuvre de DAO, vous pouvez le faire en utilisant un HashMap
. Il suffit d'ajouter la paire valeur clé dans HashMap
et l'ajouter dans l'appel de fonction et vous pouvez y accéder à l'aide de mapper.xml
« touche ».
Autres conseils
Utilisez 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)
}
La balise @param vous permet de spécifier ce que vous pouvez utiliser pour accéder au paramètre dans la carte sql. Cet exemple montre un tag @Select, mais il fonctionne comme xml.
puis modifiez votre 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();
}
}