Mybatis: Usando interfaces de mapeador com a configuração XML para parâmetros globais

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

  •  27-09-2019
  •  | 
  •  

Pergunta

Gosto da notação XML para especificar parâmetros globais, como strings de conexão. Eu também gosto de anotações de mapeador. Quando tento combinar os dois, eu entendo esta exceção.

Existe uma maneira de combinar os dois? Gostaria de usar um arquivo XML para as configurações globais, mas peça a Mybatis levar em consideração as interfaces do mapeador.

O problema é que o SQLSessionFactoryBuilder (). Build () leva um leitor (que eu quero usar para passar na configuração XML) ou um objeto de configuração (que eu vejo tem o addMappers() método que pode me ajudar) - mas não entendo como combinar os dois.

Foi útil?

Solução

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

Outras dicas

Quando você cria o interface do mapeador com os métodos abstratos com a assinatura exata do método como o SQL no XML.

Para por exemplo. Este foi o espaço para nome do Dao.xml que continha a consulta real.

<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>

Será mapeado no interface com.mybatis.dao.entityMapperInterface

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

Arquivo mybatis-config

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

Como você chama da classe de ação/servlet? Quando você tiver a SQLSession inicializada,

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

Eu tive o mesmo problema e era porque o espaço de nome no arquivo Mybatis Mapper e o pacote da interface do mapeador não estavam correspondentes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top