Domanda

Mi piace la notazione XML per specificare i parametri globali come stringhe di connessione. Mi piace anche le annotazioni Mapper. Quando cerco di combinare le due cose, ho questa eccezione .

C'è un modo per combinare le due cose? Vorrei utilizzare un file XML per le configurazioni globali, ma hanno mybatis interfacce prendere Mapper in considerazione.

Il problema è che SqlSessionFactoryBuilder () build () batte sia un lettore (che voglio usare per passare il config XML), o di un oggetto di configurazione (che vedo ha il metodo addMappers() che mi può aiutare.) - ma non capisco come combinare le due cose.

È stato utile?

Soluzione

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

Altri suggerimenti

Quando u creare il mapper interfaccia con i metodi astratti avere la firma esatto metodo di come lo SQL nel xml.

Per esempio. Questo è stato lo spazio dei nomi per il dao.xml che conteneva la query effettiva.

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

Si mappato nel interfaccia com.mybatis.dao.EntityMapperInterface

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

file Mybatis-config

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

Come fare u chiamano dalla classe Azione / Servlet? Quando u hanno la sqlSession inizializzata,

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

Ho avuto lo stesso problema ed è stato perché lo spazio nome del file mybatis mapper e il pacchetto dell'interfaccia mapper non erano corrispondenti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top