mybatis: El uso de las interfaces con asignador de configuración XML para parámetros globales

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

  •  27-09-2019
  •  | 
  •  

Pregunta

Me gusta la notación XML para especificar los parámetros globales, tales como cadenas de conexión. También me gusta anotaciones Mapper. Cuando trato de combinar los dos, me sale esta excepción .

¿Hay una manera de combinar los dos? Me gustaría utilizar un archivo XML para las configuraciones globales, pero tienen interfaces de MyBatis toma Mapper en cuenta.

El problema es que SqlSessionFactoryBuilder () build () acepta un lector (que quiero usar para pasar la configuración XML), o un objeto de configuración (que veo tiene el método addMappers() que me puede ayudar) -. Pero no entiendo cómo combinar los dos.

¿Fue útil?

Solución

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

Otros consejos

Cuando U crea la mapper interfaz con los métodos abstractos que tiene la firma del método exacto como el sql en el XML.

Para por ejemplo. Este fue el espacio de nombres para el dao.xml que contenía la 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>

Se mapeado en el interfaz com.mybatis.dao.EntityMapperInterface

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

archivo mybatis-config

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

U ¿Cómo llamaremos a partir de la clase de acción / servlet? Cuando u han inicializado el SqlSession,

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

Yo tenía el mismo problema y era debido a que el espacio de nombres de archivo en mybatis asignador y el paquete de la interfaz asignador no fueron coincidentes.

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