MyBatis配置

时间:2012-04-03 13:01:12

标签: java mybatis

我想在MyBatis中使用interface而不是mapper XML文件。在MyBatis配置文件中,我定义了mapper <mapper class="aa.B" />其中B包含使用MyBatis注释注释的方法。当我尝试创建映射器实例session.getMapper(B.class);时,我收到错误:

  

org.xml.sax.SAXParseException:必须为元素类型“mapper”声明属性“class”。

如何在此处使用接口映射SQL语句?

2 个答案:

答案 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