2012-04-03 3 views
1

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

org.xml.sax.SAXParseException: Attribute "class" must be declared for element type "mapper".

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

ответ

1

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

Configuration.addMapper(B.class) 

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

+0

Затем, что цель '' в http://www.mybatis.org/core/configuration.html#mappers? –

+0

@Johnny, Может быть, они добавлены в более позднем выпуске. Мой ответ был 3 апреля, а ссылка на ссылку, которую вы связываете, обновляется 19 апреля. –

1

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

Например, в MyBatis 3.0.1, «картограф» не имеет атрибута «класс» в DTD так:

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

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

В версии, определение атрибута «картографа» выглядит следующим образом:

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

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

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

Смежные вопросы