문제

단일 쿼리에서 동일한 resultmap을 여러 번 재사용하는 방법이 있습니까?

예를 들어, "foo"resultmap이 있다고 가정합니다.

<resultMap id="foo" class="Foo">
  <result property="Bar" column="bar" />
</resultMap>

다른 열에 대해 위의 것을 재사용하는 다른 결과 맵을 정의하는 방법이 있습니까? ... 같은 ...

<resultMap id="fizz"class="Fizz">
  <result property="Foo1" column="bar=bar1" resultMapping="foo" />
  <result property="Foo2" column="bar=bar2" resultMapping="foo" />
  <result property="Foo3" column="bar=bar3" resultMapping="foo" />
</resultMap>
도움이 되었습니까?

해결책

거의. 쿼리에서 FOO의 ID를 선택하면 FOO 결과 맵이 해당 ID에 대한 선택을 실행하여 FOO 결과 맵을 사용하게됩니다.

<result property="Foo1" column="bar1Id" select="selectFoo"/>

(당신이 있다고 가정합니다 selectFoo 쿼리 정의.) 그러나 모든 행에 대해 추가 선택을 수행하므로 큰 결과 세트에서는 매우 느립니다.

IBATIS에는 다양한 다른 객체를 포함하는 복합 객체가있는 일반적인 경우 에이 문제에 대한 해결책이 있습니다. 먼저 테이블에 결합하는 쿼리를 정의하면 사용할 수 있습니다. fooMap 채우기 위해 Foo:

<result property="Foo1" resultMap="fooMap"/>

하지만 두 가지 다른 결과 맵을 두 번 사용할 수 없습니다. Foos 결과 맵은 특정 열 이름을 지정하기 때문입니다. 그러나 다른 기술을 사용할 수 있습니다.

<result property="foo1.bar" column="foo1bar"/>
<result property="foo2.bar" column="foo2bar"/>

IBATIS Datamapper 매뉴얼 35 페이지의 자세한 내용.

다른 팁

결과 맵을 사용할 수 있으며 다른 결과 맵을 확장합니다.

<resultMap id="document" class="Document"> 
  <result property="Id" column="Document_ID"/>
  <result property="Title" column="Document_Title"/>
  <discriminator column="Document_Type" type="string"/>
  <subMap value="Book" resultMapping="book"/>
  <subMap value="Newspaper" resultMapping="newspaper"/>
</resultMap>

<resultMap id="book" class="Book" extends="document"> 
  <property="PageNumber" column="Document_PageNumber"/>
</resultMap>

더 많은 정보: http://ibatis.apache.org/docs/dotnet/datamapper/ch03s05.html

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top