2016-08-10 1 views
0

그래서 MyBatis 상속에서 특수 효과 작업을 수행했습니다. - 자식은 @Select 기능을 상속 받았습니다. 그러나 XML 파일은 적절하게 작동하지 않습니다. 일부는 mapper 요소에 extends를 사용 org.apache.ibatis.binding.BindingException: Invalid bound statement /.../MyBatis 및 XML을 사용한 상속

톱,하지만 나를 위해 그것은 "Attribute extends not allowed here"

아동에 대한 부모의 <cache/><cache-ref namespace="parent"/>을 시도하지만 그래서 어떻게

org.apache.ibatis.builder.IncompleteElementException: No cache for namespace 'parent'을 던졌다 말한다 : 이 발생합니다 XML 구성으로 MyBatis 상속을 사용 하시겠습니까?

답변

0

속성 확장결과 맵에만 적용됩니다.

캐시cache-ref은 캐시 관리에 관한 내용입니다.

확장으로 보이는 것은 사실상 인수 분해입니다. 정의 XML 매퍼의 조각을 다른 매퍼에서 참조하십시오. 예컨대 :

-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 

트릭은 참조 조각을 앞에 붙여 여부와 함께 재생하는 것입니다. 재정의하는 것처럼 보일 수 있습니다.