MyBatis | 검색 결과를 임의의 Java 오브젝트에 매핑 | 컬럼 이름에 접두어(prefix)를 지정하기
데이터 테이블
foo_table
id | bar_id |
---|---|
1 | 3 |
2 | 2 |
3 | 1 |
bar_table
id |
---|
1 |
2 |
3 |
소스 코드
Foo.java
package sample.mybatis;
public class Foo {
private int id;
private Bar bar;
@Override
public String toString() {
return "Foo [id=" + id + ", bar=" + bar + "]";
}
}
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" />
<!-- columnPrefix에서 공용하는 접두어를 지정한다. -->
<association property="bar" columnPrefix="bar_" resultMap="barResultMap" />
</resultMap>
<resultMap type="sample.mybatis.Bar" id="barResultMap">
<id property="id" column="id" />
</resultMap>
<select id="selectFoo" resultMap="fooResultMap">
select foo.id
,bar.id bar_id -- "bar_"를 접두어로 지정
from foo_table foo
,bar_table bar
where bar.id = foo.bar_id
order by foo.id asc
</select>
</mapper>
selectFoo의 실행 결과
Foo [id=1, bar=Bar [id=3]]
Foo [id=2, bar=Bar [id=2]]
Foo [id=3, bar=Bar [id=1]]
설명
- JOIN을 할 때 다른 테이블의 동명 컬럼과 구별하기 위해, 보통 접두사(bar_)을 붙일 것이다.
- 그런 경우에도 resultMap을 사용할 수 있도록, columnPrefix라는 속성이 포함되어 있다.
- columnPrefix을 지정하면 column의 설정 값에 접두사를 붙인 명칭으로 매핑이 이루어지게 된다.
최종 수정 : 2021-08-26