[Mybatis] association 결과 매핑 예제
<association>
요소를 사용하여 MyBatis에서 관계를 가진 객체들 간의 결과 매핑을 정의할 수 있습니다. 이를 통해 객체 간의 연관성을 처리하고 결과를 매핑할 수 있습니다. 아래에 간단한 <association>
결과 매핑 예제를 제공하겠습니다.
가령, “users” 테이블과 “user_profiles” 테이블이 있을 때, 사용자와 해당 사용자의 프로필 정보를 매핑하는 상황을 가정해봅시다. User
클래스는 사용자 정보를, UserProfile
클래스는 프로필 정보를 나타내는 클래스입니다.
MyBatis에서 이를 구현하려면 다음과 같이 <association>
요소를 사용할 수 있습니다.
<resultMap id="userWithProfileMap" type="your.package.User">
<id property="id" column="user_id"/>
<result property="username" column="username"/>
<result property="email" column="email"/>
<association property="profile" javaType="your.package.UserProfile">
<id property="profileId" column="profile_id"/>
<result property="firstName" column="first_name"/>
<result property="lastName" column="last_name"/>
</association>
</resultMap>
<select id="selectUserWithProfile" resultMap="userWithProfileMap">
SELECT u.id as user_id, u.username, u.email,
p.id as profile_id, p.first_name, p.last_name
FROM users u
LEFT JOIN user_profiles p ON u.id = p.user_id
WHERE u.id = #{userId}
</select>`
위의 예제에서 <association>
요소는 User
클래스와 UserProfile
클래스 간의 관계를 정의합니다. selectUserWithProfile
쿼리에서 resultMap
속성으로 이 매핑을 사용하면 사용자 정보와 해당 사용자의 프로필 정보가 함께 매핑됩니다.
이제 selectUserWithProfile
쿼리를 호출하면 사용자 정보와 해당 사용자의 프로필 정보가 적절하게 매핑된 결과가 반환됩니다.