gpt4 book ai didi

java - MyBatis 和 XML 的继承

转载 作者:行者123 更新时间:2023-11-30 07:12:59 25 4
gpt4 key购买 nike

所以我得到了 MyBatis 继承与注释 - 子继承 @Select功能。但对于 XML 文件,它无法相应地工作。它会抛出: org.apache.ibatis.binding.BindingException: Invalid bound statement /.../

看到有些人使用了extends关于mapper元素,但对我来说它说 "Attribute extends not allowed here"

尝试过<cache/>关于 parent 和 <cache-ref namespace="parent"/>在 child 身上,但这引发了org.apache.ibatis.builder.IncompleteElementException: No cache for namespace 'parent'

那么如何让 MyBatis 继承与 XML 配置一起工作呢?

最佳答案

属性extends仅适用于resultMap

cachecache-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>

-Mapper2.xml

<sql id="a"> something specific to this mapper </sql>
<select id="statement">
<include refid="Mapper1.template" />
</select>

include 标签的行为就像引用片段的复制/粘贴一样。然后 select 语句将产生:

something specific to this mapper
something common to include

诀窍是使用前缀或未引用的片段。它可能看起来像是压倒一切的。

关于java - MyBatis 和 XML 的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38876389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com