본문으로 바로가기

MyBatis resultType vs resultMap 차이점

category SPRING/MyBatis 2021. 9. 9. 10:40
728x90
반응형
SMALL

resultType 은 반환타입으로 클래스 자체를 가져와 참조

resultMap은 반환타입으로 개발자가 xml 내에서 임의로 정의한 형식으로 참조(db컬럼명을 선언후 나는 자바에서 내가 원하는 명으로 뽑고싶다)

 

예를 보며 이해하자

resultType

 

db의 컬럼 명이다

자바에서 리턴받는 vo타입이다.

resultType을 사용하여 클래스를 가져오게 되면

sql 문이 실행되고 반환타입으로 자신의 db컬럼명에 따라 반환되어 자바의 VO타입과 매핑되어 결과가 도출되어

p_id라는 값에 0으로서 db 컬럼명과 불일치하는 자바 명이 매칭되었기 때문에 이상한 값이 나온다.

<select id="getProjectInfoByProjectId" resultType="ibs.com.domain.ProjectVO">
	select * from PROJECT where ID=#{id}
</select>

 

resultMap

xml 내에서 직접 타입을 지정해주자.

property는 db에서 뽑은 값을 사용하고 싶을때 사용되는 이름을 선언하자.

column에는 실제 db컬럼명을 매핑하여

내가 자유자재로 명명규칙을 정하여 사용할수있다.

<resultMap id="projectVO" type="ibs.com.domain.ProjectVO" >
			<result property="p_id" column="id"/>
		    <result property="project_title" column="project_title"/>
		    <result property="project_nickname" column="project_nickname"/>
		    <result property="startdate" column="startdate"/>
		    <result property="enddate" column="enddate"/>
		    <result property="state" column="state"/>
		    <result property="context" column="context"/>
		    <result property="manager" column="manager"/>
	</resultMap>
<select id="getProjectInfoByProjectId" resultMap="ProjectVO">
	select * from PROJECT where ID=#{id}
</select>

본래의 id값에 1이라는 값이 정상적으로 매핑 됬으며 내가 원하는 결과를 가져온다.

728x90
반응형
LIST