mybatis: Utilisation Mapper interfaces avec configuration XML pour les paramètres globaux

StackOverflow https://stackoverflow.com/questions/4264485

  •  27-09-2019
  •  | 
  •  

Question

J'aime la notation XML pour spécifier les paramètres globaux tels que les chaînes de connexion. Je aime aussi annotations Mapper. Lorsque je tente de combiner les deux, je reçois cette exception .

Est-il possible de combiner les deux? Je voudrais utiliser un fichier XML pour les configurations globales, mais ont mybatis prendre en compte les interfaces Mapper.

Le problème est que SqlSessionFactoryBuilder () build () prend soit un lecteur (que je veux utiliser pour transmettre la configuration XML), ou un objet de configuration (que je vois a la méthode addMappers() qui peut me aider) -. Mais Je ne comprends pas comment combiner les deux.

Était-ce utile?

La solution

factory.getConfiguration().addMapper(...);

Autres conseils

u créer le Interface mappeur avec les méthodes abstraites ayant la signature exacte du procédé tel que SQL dans le fichier XML.

Pour exemple. Ce fut l'espace de noms pour la dao.xml qui contenait la requête réelle.

<mapper namespace=" com.mybatis.dao.EntityMapperInterface">
    <select id="selectEmployeeWithId" parameterType="Long"
        resultType="com.mybatis.domain.Employee">
        select id,name from employee where 1=1
        <if test="_parameter != null"> 
            AND id=#{id} 
        </if>
        order by id
    </select>

Il sera mis en correspondance dans le Interface com.mybatis.dao.EntityMapperInterface

public interface EntityMapperInterface {
    public List<Employee> selectEmployeeWithId(Long id);

fichier mybatis-config

<mappers>
    <mapper resource="com/mybatis/mappers/EntityMapper.xml" />
</mappers>

Comment u l'appeler de la classe d'action / Servlet? Lorsque u ont le SqlSession initialisé,

EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class);
List eList = emi.selectEmployeeWithId(1);

J'ai eu le même problème et a été parce que l'espace de nom dans mybatis fichier cartographe et l'ensemble de l'interface ont été mappeur ne correspondent pas.

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