❓ResultMap
ResultMap은 주로 <resultMap>엘리먼트를 사용하여 MyBatis의 XML 설정 파일에 정의된다.
resultMap 안에는 데이터베이스 결과와 자바 객체 간의 매핑 규칙이 포함된다.
<result> : result 엘리먼트는 한 개의 컬럼을 한 개의 프로퍼티나 간단한 데이터 타입의 필드에 매핑한다. 또는 테이블 컬럼명과 프로퍼티명이 다른 경우에도 사용되고, 쿼리구문이 join 구문 등의 사용으로 검색 결과를 하나의 자바 객체로 매핑할 수 없을 때에도 사용된다.
<id> : 기본 키 열을 나타내며, 객체의 기본 키를 매핑한다. resultMap 엘리먼트는 요소를 구분하기 위한 유일한 값을 id 속성에 지정하고 type을 기술한다.
type 속성은 이 매핑이 적용될 자바 객체의 클래스를 나타낸다. 어떤 종류의 객체에 이 매핑을 사용할 것인지를 지정한다.
- javaType : 클래스명이나 타입 별명
- jdbcType : jdbc 타입을 명시
extends 속성은 다른 resultMap을 확장(상속)하여 재사용할 수 있다. 이를 통해 중복을 줄이고 복잡한 매핑을 간소화할 수 있다.
MyBatis는 자동 매핑을 지원하며, resultMap을 정의하지 않고도 열 이름과 프로퍼티 이름이 일치하는 경우 자동으로 매핑한다.
✨ property => 결과 컬럼에 매핑되는 필드 또는 자바빈과 동일한 프로퍼티
✨ column => 데이터베이스 컬럼명이나 컬럼의 별명
❗ resultMap을 사용하면 데이터베이스 결과 집합을 자바 객체로 변환할 때 필드와 컬럼 간의 매핑을 명시적으로 제어하거나 복잡한 매핑 시나리오를 다룰 수 있다.
* 테이블의 컬럼명과 자바빈의 프로퍼티명이 다를 때 SELECT문의 컬럼명에 별칭을 사용하여 일치시킬 수 있다.
<select id="구분자" resultType="반환타입">
select 컬럼명1 as 별칭, 컬럼명2 as 별칭 ...
from 테이블명
where 컬럼명 = #{값}
</select>
* 테이블의 컬럼명과 자바빈의 프로퍼티명이 다를 경우 column에 테이블의 컬럼명, property에 자바빈의 프로퍼티명을 기술하여 일치시킨다.
<resultMap id="id명" type="타입명">
<result property="프로퍼티명" column="컬럼명" />
</resultMap>
<select id="구분자" resultMap="id명">
select 컬럼명1, 컬럼명2 ...
from 테이블명
</select>
=> 적용하면 다음과 같다.
(property는 필드명 column은 컬럼명)
<resultMap id="memberResult" type="memberVO">
<result property = "userId" column="user_id" />
<result property = "userPwd" column = "user_pwd" />
</resultMap>
<select id="memberList" resultMap="memberResult">
select user_id, user_pwd
from member
</select>
'MyBatis' 카테고리의 다른 글
동적 SQL (1) | 2023.10.08 |
---|---|
CDATA Section (0) | 2023.10.07 |
바인딩변수를 이용한 SQL문 (0) | 2023.10.06 |
MyBatis 프레임워크 (3) | 2023.10.06 |
mybatis-config.xml 설정파일 (1) | 2023.08.07 |