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

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

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

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

3 ответов


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


при создании маппер интерфейс с абстрактными методами, имеющими точную сигнатуру метода как 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.Дао.EntityMapperInterface

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

Mybatis-config file

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

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

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

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