Mybatis! Pasando múltiples parámetros a mapper dao
-
26-10-2019 - |
Pregunta
Estoy tratando de enviar múltiples parámetros a la función mapper definida en la implementación de DAO, pero no puedo enviar más de 1 parámetro en el caso de que el parámetro no sea titular de ninguna clase. Quiero decir, ¿cómo puedo modificar el siguiente código?
obj.getName(int a, int b);
En la implementación de DAO
public void getAllName() throws PersistenceException {
SqlSession session = sf.openSession();
try {
session.selectList("getNames");
} finally {
session.close();
}
}
Quiero enviar A y B para consultar GetNames.
Gracias por adelantado.
Solución
Si está utilizando la implementación de DAO, puede hacerlo utilizando un HashMap
. Simplemente agregue el par de valores clave en HashMap
y agréguelo en la llamada de función y puede acceder a ella en el mapper.xml
Usando "clave".
Otros consejos
Usa un mapeador.
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 etiqueta @param le permite especificar lo que puede usar para acceder al parámetro en el mapa SQL. Este ejemplo muestra una etiqueta @Select, pero funciona igual que XML.
luego cambia tu código,
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();
}
}
Leer el guía del usuario para más información.