MyBatis: Использование интерфейсов Mapper с XML Config для глобальных параметров

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

  •  27-09-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

Другие советы

Когда вы создаете интерфейс 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 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 не соответствует.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top