iBatis를 이용하여 개발을 할때 종종 두개의 테이블을 조인하여 결과를 리턴하는 경우가 생긴다.
각각의 테이블의 모델들이 존재하는데 두개의 테이블을 합친 새로운 모델을 다시 만든다는게 여간 귀찮은게 아니다.. 특히 필드의 갯수가 장난이 아닐때는 정말 하기 싫은 일이다.
이럴때 두개의 모델을 인스턴스로 가지는 새로운 모델을 하나 만들기만 하면 의외로 간단하게 처리 할수가 있다.
A.java
class A {
private String a;
private String b;
....
}
B.java
class B {
private String g;
private String h;
....
}
위 두개의 모델을 다시 하나의 모델 C로 정의한다.
C.java
class C {
private A a;
private B b;
}
그리고 iBatis의 sql맵에서
<result id="result" class="C">
<result property="a.a" column="field1"/>
<result property="a.b" column="field2"/>
<result property="b.g" column="field3"/>
<result property="b.h" column="field4"/>
</result>
<select id="select" resultMap="result">
select A.field1 ,A.field2, B.field3, B.field4
from aaa A, bbb B
where ....
</select>
View처리부에서도 출력을 할때 a.a라고 해주면 될것이다.