为什么这个不正确的 "package" 标签在 MyBatis XML 配置中有效?
Why does this incorrect "package" tag in MyBatis XML config work?
通常我们在 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 告诉我,这给了我这个错误:
The content of element type "mappers" must match "(mapper)+"
但是,当我 运行 应用程序时,一切仍然正常。另一方面,当我尝试删除不正确的 package
元素时,MyBatis 不知道在哪里可以找到映射器,我得到这个 运行time error:
org.apache.ibatis.binding.BindingException: Type interface
it.example.mappers1.MyMapper is not known to the MapperRegistry
所以我们有一个错误的有效配置是必要的。为什么?我是否指定了错误的 DTD?
我确实为 ibatis 指定了旧的 DTD。如果我用正确的 http://mybatis.org/dtd/mybatis-3-config.dtd 替换,一切都会生效并正常工作。够傻
通常我们在 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 告诉我,这给了我这个错误:
The content of element type "mappers" must match "(mapper)+"
但是,当我 运行 应用程序时,一切仍然正常。另一方面,当我尝试删除不正确的 package
元素时,MyBatis 不知道在哪里可以找到映射器,我得到这个 运行time error:
org.apache.ibatis.binding.BindingException: Type interface it.example.mappers1.MyMapper is not known to the MapperRegistry
所以我们有一个错误的有效配置是必要的。为什么?我是否指定了错误的 DTD?
我确实为 ibatis 指定了旧的 DTD。如果我用正确的 http://mybatis.org/dtd/mybatis-3-config.dtd 替换,一切都会生效并正常工作。够傻