我想在MyBatis中使用interface而不是mapper XML文件。在MyBatis配置文件中,我定义了mapper
<mapper class="aa.B" />
其中B包含使用MyBatis注释注释的方法。当我尝试创建映射器实例session.getMapper(B.class);
时,我收到错误:
org.xml.sax.SAXParseException:必须为元素类型“mapper”声明属性“class”。
如何在此处使用接口映射SQL语句?
答案 0 :(得分:1)
您无法通过sqlconfig xml文件添加Mapper接口,您必须使用Java API
Configuration.addMapper(B.class)
sqlconfig xml中的节点用于定位sqlmap XML,而不是Mapper接口。 或者您可以使用mybatis-spring,它支持将所有映射器自动添加到sqlsessionfactory的配置中。
答案 1 :(得分:1)
由于DTD中'mapper'元素中缺少属性'class'而发生异常。
例如,在MyBatis 3.0.1中,'mapper'在DTD中没有'class'属性,如下所示:
<!ATTLIST mapper
resource CDATA #IMPLIED
url CDATA #IMPLIED
>
您需要将MyBatis库升级到3.1.1等最新版本。
在版本中,'mapper'的属性定义如下:
<!ATTLIST mapper
resource CDATA #IMPLIED
url CDATA #IMPLIED
class CDATA #IMPLIED
>
您可以在MyBatis库的以下路径中找到您的DTD文件:
组织/阿帕奇/ ibatis的/助洗剂/ XML / MyBatis的-3- config.dtd