본문 바로가기
MyBatis

ResultMap

by Kimjoy 2023. 10. 7.

❓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