MyBatis | 검색 결과를 임의의 Java 오브젝트에 매핑 | 콜렉션 매핑
기본
DB 테이블
foo_table
id |
---|
1 |
2 |
3 |
bar_table
key1 | foo_id |
---|---|
1 | 1 |
2 | 1 |
3 | 1 |
4 | 2 |
5 | 2 |
6 | 3 |
소소 코드
Foo.java
package sample.mybatis;
import java.util.List;
public class Foo {
private int id;
private List<Bar> barList;
@Override
public String toString() {
return "Foo [id=" + id + ", barList=" + barList + "]";
}
}
Bar.java
package sample.mybatis;
public class Bar {
private int id;
@Override
public String toString() {
return "Bar [id=" + id + "]";
}
}
sample_mapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="sample.mybatis">
<resultMap type="sample.mybatis.Foo" id="fooResultMap">
<id property="id" column="id" />
<!-- collection 태그를 사용한다. -->
<collection property="barList" ofType="sample.mybatis.Bar">
<id property="id" column="bar_id" />
</collection>
</resultMap>
<select id="selectFoo" resultMap="fooResultMap">
select foo.id
,bar.id bar_id
from foo_table foo
,bar_table bar
where bar.foo_id = foo.id
</select>
</mapper>
selectFoo의 실행 결과
[DEBUG] s.m.selectFoo - ==> Preparing: select foo.id ,bar.id bar_id from foo_table foo ,bar_table bar where bar.foo_id = foo.id
[DEBUG] s.m.selectFoo - ==> Parameters:
[DEBUG] s.m.selectFoo - <== Total: 6
Foo [id=1, barList=[Bar [id=1], Bar [id=2], Bar [id=3]]]
Foo [id=2, barList=[Bar [id=4], Bar [id=5]]]
Foo [id=3, barList=[Bar [id=6]]]
설명
- 컬렉션을 매핑하려면
<collection>
태그를 사용한다. - 각 요소의 형태는 ofType 속성에서 지정한다 (별칭 가능).
- 그 외에는
<association>
태그의 때와 동일한 방식으로 설정한다.
최종 수정 : 2021-08-26