Конфигурация MyBatis - PullRequest
       2

Конфигурация MyBatis

1 голос
/ 03 апреля 2012

Я хочу использовать интерфейс вместо файла Mapper XML в MyBatis. В конфигурационном файле MyBatis я определяю маппер <mapper class="aa.B" /> где B содержит методы, аннотированные аннотациями MyBatis. Когда я пытаюсь создать экземпляр маппера session.getMapper(B.class);, я получаю сообщение об ошибке:

org.xml.sax.SAXParseException: атрибут "class" должен быть объявлен для типа элемента "mapper".

Как я могу использовать интерфейсы для отображения операторов SQL здесь?

Ответы [ 2 ]

1 голос
/ 16 августа 2012

Исключение происходит из-за отсутствия атрибута 'class' в элементе 'mapper' в DTD.

Например, в MyBatis 3.0.1, 'mapper' не имеет атрибута 'class'в DTD, например:

<!ATTLIST mapper
resource CDATA #IMPLIED
url CDATA #IMPLIED
>

Вам необходимо обновить библиотеку MyBatis до последней, например 3.1.1.

В версии определение атрибута 'mapper' выглядит следующим образом:

<!ATTLIST mapper
resource CDATA #IMPLIED
url CDATA #IMPLIED
class CDATA #IMPLIED
>

Файл DTD можно найти по следующему пути в библиотеке MyBatis:

org / apache / ibatis / builder / xml / mybatis-3-config.dtd

1 голос
/ 03 апреля 2012

Вы не можете добавить интерфейс Mapper через файл sqlconfig xml, вам нужно использовать Java API

Configuration.addMapper(B.class)

Узел в sqlconfig xml предназначен для определения XML-файлов sqlmap, а не интерфейсов Mapper.Или вы можете использовать mybatis-spring, который поддерживает автоматическое добавление всех картографов в указанном пакете в конфигурацию sqlsessionfactory.

...