我正在使用Spring和MyBatis。我试图通过引用Can we import XML file into another XML file?导入另一个MyBatis文件(自动生成)。
1)MyTest.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" [
<!ENTITY BaseTest.xml SYSTEM "BaseTest.xml" >
]>
<mapper namespace="com.test.abc">
&BaseTest.xml;
<select id="CUSTOMIZED_SELECT">
...
</select>
<insert id="CUSTOMIZED_INSERT">
...
</insert>
</mapper>
2)BaseTest.xml。实际上它只是一个XML片段;它没有xml标头也没有外部映射器元素:
<sql id="GENERAL_WHERE">
...
</sql>
<select id="GENERAL_SELECT">
...
</select>
<insert id="GENERAL_INSERT">
...
</insert>
这两个文件位于同一目录中。但Spring总是抱怨它无法找到BaseTest.xml。
我需要调整哪些特殊内容?
BTW,BaseTest.xml和MyTest.xml背后的原因是BaseTest.xml是自动生成的,MyTest.xml是手动编写的。谢谢!
答案 0 :(得分:1)
不,您无法将Mybatis XML映射器导入另一个。
如果可以:<mapper>
namespace
属性会发生什么?
<sql>
个片段<resultMap>
。只需确保使用完全限定名称:namespace.id
例如:<include refid="com.test.abc.TestMapper.sqlFragementId" />
Ans不要忘记,如果包含片段还包含一个片段,则将从根映射器进行引用,即使在同一映射器中引用片段,也可能需要使用完全限定名称。无论如何,保持简单的id引用允许覆盖(一种继承)。但这要小心处理。