2012-04-03 64 views
1

我想在MyBatis中使用接口而不是映射器XML文件。在MyBatis配置文件中,我定义了映射器 <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

无法通过sqlconfig XML文件中添加映射接口,你已经使用Java API

Configuration.addMapper(B.class) 

在sqlconfig XML节点是definding的SqlMap个XML,而不是映射器接口。 或者您可以使用mybatis-spring,它支持将所有包中的所有映射器自动添加到sqlsessionfactory的配置中。

+0

那么,什么是http://www.mybatis.org/core/configuration.html#mappers中的''的目的是什么? – 2012-08-14 10:06:14

+0

@Johnny,可能是他们在以后的版本中添加的东西。我的答案是在4月3日,而你链接的页面最后更新于4月19日。 – 2012-08-16 15:09:44

1

DTD中的'mapper'元素中缺少属性'class',导致异常。

例如,在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