mybatis: использование интерфейсов картографа с конфигурацией XML для глобальных параметров

Мне нравится нотация XML для указания глобальных параметров, таких как строки подключения. Мне также нравятся аннотации Mapper. Когда я пытаюсь объединить их, я получаю это исключение.

Есть ли способ объединить их? Я хотел бы использовать файл XML для глобальных конфигураций, но mybatis должен учитывать интерфейсы Mapper.

Проблема в том, что SqlSessionFactoryBuilder().build() принимает либо Reader (который я хочу использовать для передачи XML-конфигурации), либо объект Configuration (который, как я вижу, имеет метод addMappers(), который может мне помочь), но я этого не делаю. не понимаю, как их совместить.


person ripper234    schedule 24.11.2010    source источник
comment
Я бы очень хотел это знать! Добавление интерфейсов картографа вручную не является подходящим решением. Как мы можем настроить преобразователи в XML и использовать MapperInterfaces вместе, не добавляя их вручную?   -  person Chris    schedule 04.05.2011


Ответы (2)


Когда вы создаете интерфейс сопоставления с абстрактными методами, имеющими точную сигнатуру метода, как sql в xml.

Например. Это было пространство имен для dao.xml, которое содержало фактический запрос.

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

Он будет отображаться в интерфейсе com.mybatis.dao.EntityMapperInterface.

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

Файл Mybatis-config

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

Как вы вызываете это из класса действий/сервлета? Когда у вас инициализирован SqlSession,

EntityMapperInterface emi = session.getMapper(EntityMapperInterface.class);
List eList = emi.selectEmployeeWithId(1);
person Achow    schedule 22.03.2012
comment
Где это упоминается в документации? - person erickson; 05.08.2019

У меня была такая же проблема, потому что пространство имен в файле сопоставления mybatis и пакет интерфейса сопоставления не совпадали.

person Anoop Isaac    schedule 13.12.2011