IT 소스/MyBatis

[MyBatis] <resultMap> - 쿼리 결과를 객체에 매핑

한량이야기 2024. 2. 21. 13:52
반응형

안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.

resultMap tag 설명

 

<resultMap> 태그는 쿼리 결과를 객체에 매핑하는 데 사용됩니다. 

이 태그를 사용하면 데이터베이스에서 검색한 결과를 

자바 객체로 변환하여 객체 간의 매핑을 자유롭게 정의할 수 있습니다.

 

1. <resultMap> 태그의 구문 및 사용법

<!-- <resultMap> 태그의 기본 구조 -->
<resultMap id="고유식별자" type="매핑할클래스">
    <!-- 각 컬럼을 속성에 매핑하는 result 태그들 -->
    <result column="데이터베이스의 컬럼" property="자바 객체의 속성"/>
                                       .
                                       .
                                       .
</resultMap>

 

<resultMap> 태그의 주요 속성

속성명 속성 설명
id  resultMap의 고유 식별자로, 다른 쿼리에서 이를 참조할 때 사용됩니다.
type 결과를 매핑할 자바 객체의 클래스를 지정합니다.
result
각 컬럼을 자바 객체의 속성에 매핑하는 데 사용됩니다.
column : 데이터베이스의 컬럼을 지정합니다.

property : 자바 객체의 속성을 지정합니다.

 

2. <resultMap> 태그의 예제

<!-- <resultMap>을 설정 -->
<resultMap id="userMap" type="User">
    <result column="id" property="userId"/>
    <result column="username" property="userName"/>
    <result column="email" property="eMail"/>
</resultMap>

<!-- 위에서 정의한 resultMap을 호출 -->
<select id="getUserById" resultMap="userMap" parameterType="int">
    SELECT * FROM Users WHERE id = #{userId}
</select>

 

위의 예시에서 사용된 resultMap 태그는 

"userMap"이라는 고유 식별자를 가지고 있습니다. 

resultMap은 자바 User 클래스에 매핑됩니다. 

 

그리고 각 result 태그는 데이터베이스의 컬럼을

자바 User 클래스의 속성을 매핑합니다.

첫 번째 result 태그는 데이터베이스의 "id" 컬럼을

자바 User 클래스의 "userId" 속성에 매핑하므로 

검색된 결과의 "id"의 값은 User 객체의 "userId" 속성에 할당됩니다.

두 번째 result 태그는 데이터베이스의 "username" 컬럼을

자바 User 클래스의 "userName" 속성에 매핑하므로 

검색된 결과의 "username"의 값은 User 객체의 "userName" 속성에 할당됩니다.

세 번째 result 태그는 데이터베이스의 "email" 컬럼을

자바 User 클래스의 "eMail" 속성에 매핑하므로 

검색된 결과의 "email"의 값은 User 객체의 "eMail" 속성에 할당됩니다.

반응형