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.

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top