通常我们在XML文件中定义查询,MyBatis XML配置的mappers
部分如下所示:
<mappers>
<mapper resource="mappers/example1.xml"/>
<mapper resource="mappers/example2.xml"/>
</mappers>
一切都很好。
现在一个贡献者添加了一些映射器作为java类,我们有一个混合配置,其中xml文件和java包都列在mappers
中:
<mappers>
<mapper resource="mappers/example1.xml"/>
<mapper resource="mappers/example2.xml"/>
<package name="it.example.mappers1" />
<package name="it.example.mappers2" />
</mappers>
我发现文档类型定义http://ibatis.apache.org/dtd/ibatis-3-config.dtd不包含package
作为mappers
的正确内容,因此我被eclipse告知,这给了我这个错误:
元素类型“mappers”的内容必须匹配“(mapper)+”
然而,当我运行应用程序时,一切仍然正常。另一方面,当我尝试删除不正确的package
元素时,MyBatis不知道在哪里找到映射器,我得到了这个运行时错误:
org.apache.ibatis.binding.BindingException:键入interface MapperRegistry不知道it.example.mappers1.MyMapper
所以我们有一个错误的配置,这是有效的,是必要的。为什么?我是否指定了错误的DTD?
答案 0 :(得分:0)
我确实为ibatis指定了旧的DTD。如果我用正确的http://mybatis.org/dtd/mybatis-3-config.dtd替换,一切都会有效并且有效。够傻了