[Mybatis] 마이바티스 컬럼


(Mybatis) Mybatis 열 자동 매핑(Auto-Mapping)

안녕하세요.
오늘은 MyBatis에서 자동 열 매핑을 처리하는 방법에 대해 공유하고자 합니다. MyBatis를 개발할 때 resultType을 사용하여 결과 데이터를 맵이나 클래스에 매핑해야 하지만 때때로 resultMap을 사용하여 결과 데이터를 반환해야 합니다. 이러한 상황에서 컬럼의 수가 많으면 많은 컬럼을 매핑해야 하므로 예상보다 시간이 오래 걸릴 수 있습니다. 이 경우 쉽게 자동 매핑 처리를 하고 결과 데이터를 반환할 수 있도록 예제로 정리하도록 하겠습니다.


resultType 및 resultMap

resultType: 작성 중인 유형에 적합한 클래스에 대한 열 정보 자동 매핑

resultMap: xml에 정의된 컬럼 정보에 대한 규칙별 컬럼 매핑


1. 수동으로 resultMap 매핑

<mapper namespace="com.demo.system.model.mapper.TestMapper">

	<!-- Member 목록 조회 mapper -->
	<select id="selectMemberList" resultMap="memberMap">
		SELECT
			Idx		,
			Name	,
			EmpNo	,
			Age
		  FROM Member
		 WHERE Age = #{age}
	</select>
	
	<resultMap type="member" id="memberMap">
		<id 	column="Idx" 	property="idx"/>
		<result column="Name" 	property="name"/>
		<result column="EmpNo"  property="empNo"/>
		<result column="Age" 	property="age"/>
	</resultMap>
</mapper>

위의 샘플 소스 코드는 resultMap을 사용하는 일반적인 경우입니다.
resultMap의 id 값과 select 절의 resultMap 값을 연결하고, select 태그에서 조회한 결과 값의 컬럼 정보를 resultMap에 매핑한다. 위의 방법은 일반적인 방법으로 각 열이 어떤 클래스의 변수에 매핑되는지 직관적으로 확인할 수 있습니다.
위의 절차는 그런 문제는 아니지만 컬럼의 수가 증가함에 따라 컬럼 매핑을 수행하는 것만으로도 상당한 시간이 소요됩니다.
따라서 위의 절차를 단순화하기 위해 자동 매핑 처리를 수행하는 것이 좋습니다.
다음 샘플 소스 코드를 살펴보겠습니다.


반응형



2. resultMap 자동 매핑

<mapper namespace="com.demo.system.model.mapper.TestMapper">

	<!-- Member 목록 조회 mapper -->
	<select id="selectMemberList" resultMap="memberMap">
		SELECT
			Idx		,
			Name	,
			EmpNo	,
			Age
		  FROM Member
		 WHERE Age = #{age}
	</select>
	
	<resultMap type="member" id="memberMap" autoMapping="true">
		<id 	column="Idx" 	property="idx"/>
	</resultMap>
</mapper>

위의 예는 자동 매핑 프로세스입니다.
각 열을 수동으로 매핑하는 것보다 훨씬 쉽습니다.
자동 매핑 처리를 수행하려면 resultMap 태그에서 autoMapping=”참” 설정을 추가해야 합니다. 그리고 데이터의 인덱스 컬럼이 되는 컬럼을 id 태그로 잡으면 끝!
방법은 정말 간단하지만 위와 같은 방법으로 작업을 하시면 노동 생산성이 많이 올라갑니다. 다만, 개발환경에 따라 위의 방법이 선호되지 않는 곳도 있으니 상황에 맞게 사용하시면 됩니다!


오늘은 MyBatis의 resultMap 자동 열 매핑을 다루는 방법을 요약했습니다.
위에서 설명한 것처럼 정말 사용하기 쉽고 효과도 꽤 좋습니다. 다만, 위의 방법이 선호되지 않는 환경도 있으므로 상황에 따라 사용하는 것을 권장합니다.

그럼 오늘도 저의 작고 소중한 글을 읽어주셔서 진심으로 감사드립니다.