Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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