http://ibatisnet.sourceforge.net/DevGuide.html#d0e1064

Composite Keys or Multiple Complex Parameters Properties

Example 36. Mapping a componsite key

<resultMap id=”select-order-result” class=”order”>
  <result property=”id” column=”ORD_ID”/>
  <result property=”customerId” column=”ORD_CST_ID”/>
  …
  <result property=”payments” column=”{itemId=ORD_ID, custId=ORD_CST_ID}”
    select=”selectOrderPayments”/>
</resultMap>

<statement id=”selectOrderPayments”
  resultMap="select-payment-result”>
  select * from PAYMENT
  where PAY_ORD_ID = #itemId#
  and PAY_CST_ID = #custId#
</statement>
 

이렇게 하면 된다는데 왜 안되는거니??



 



iBATIS에서 resultMap에 property로 다른 쿼리의 결과를 설정할 수가 있다.

아래와 같이 사용하면 된다.

<resultMap id=”get-category-result” class=”com.ibatis.example.Category”>
   <result property=”id” column=”CAT_ID”/>
   <result property=”description” column=”CAT_DESCRIPTION”/>
   <result property=”productList” column=”CAT_ID” select=” getProductsByCatId”/>
</resultMap>

select, column attribute를 살펴보자.

  • select : 해당 쿼리 실행 결과가 property 값으로 들어간다.

  • column : select에 명시된 쿼리의 parameter를 나열한다.

해당 쿼리의 parameter가 여러개인 경우에는 column="{column1, column2, ..}" 와 같이 나열하면 되고,

parameter에 이름을 지정하고 싶을 경우는 column="{key1=column1, key2=column2, ...}"의 형태로 써주면 된다.

key1이 select에 명시된 쿼리에서 사용할 parameter 이름이고,

column1은 값으로 들어가는 resultMap의 column이 된다.

Posted by [czar]
,