2016-08-10 65 views
0

所以我得到MyBatis繼承工作與註釋 - 子繼承@Select功能。 但是對於XML文件,它不能正常工作。 它會拋出: org.apache.ibatis.binding.BindingException: Invalid bound statement /.../繼承與MyBatis和XML

看到一些mapper元素上使用extends,但對我來說說"Attribute extends not allowed here"

試戴孩子<cache/>對家長和<cache-ref namespace="parent"/>但扔org.apache.ibatis.builder.IncompleteElementException: No cache for namespace 'parent'

那麼如何讓MyBatis繼承與XML配置一起工作?

回答

0

屬性延伸僅適用於resultMap

緩存cache-ref是關於緩存管理的。

所有看起來像擴展的東西實際上都是因式分解:在XML映射器中定義片段並在其他映射器中引用它們。 E.g:

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

包括標籤的行爲就像引用片段的複製/粘貼。 然後select語句將產生:

something specific to this mapper 
something common to include 

訣竅是用前綴或不引用片段播放。它可能看起來像壓倒一切。