Java 使用MyBatis和XML进行继承
所以我让MyBatis继承与注释一起工作-子继承Java 使用MyBatis和XML进行继承,java,mybatis,ibatis,Java,Mybatis,Ibatis,所以我让MyBatis继承与注释一起工作-子继承@Select功能。 但是对于XML文件,它不能相应地工作。 它将抛出: org.apache.ibatis.binding.BindingException:无效的绑定语句/../ 看到一些人在映射器元素上使用了扩展,但对我来说它说“这里不允许属性扩展” 在父对象上尝试了,在子对象上尝试了,但引发了org.apache.ibatis.builder.IncomplementElement异常:命名空间“父对象”没有缓存 那么如何让MyBatis继
@Select
功能。
但是对于XML文件,它不能相应地工作。
它将抛出:
org.apache.ibatis.binding.BindingException:无效的绑定语句/../
看到一些人在映射器
元素上使用了扩展
,但对我来说它说“这里不允许属性扩展”
在父对象上尝试了
,在子对象上尝试了
,但引发了org.apache.ibatis.builder.IncomplementElement异常:命名空间“父对象”没有缓存
那么如何让MyBatis继承使用XML配置呢?属性扩展仅适用于resultMap
cache和cache ref是关于缓存管理的
所有看起来像扩展的东西实际上都是分解:在XML映射器中定义sql片段,并在其他映射器中引用它们。例如:
-Mapper1.xml:
<sql id="a">/* dummy will never actually been included */</sql>
<sql id="b"> something common to include </sql>
<sql id="template">
<include refid="a" />
<include refid="Mapper1.b" />
</sql>
诀窍是使用前缀或未引用的片段。它可能看起来像是重写。我同意whit balckwizzard cache和cache ref在这种情况下没有用处(我也在某个地方读过一篇文章,建议使用它们来扩展xml,但我认为战后是一个错误)
我提出了一个我认为对你也有好处的答案:
问候
<sql id="a"> something specific to this mapper </sql>
<select id="statement">
<include refid="Mapper1.template" />
</select>
something specific to this mapper
something common to include