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.

Était-ce utile?

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

Lire le guide utilisateur pour plus d'informations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top