resultMap 이란?

	<select id="test1" resultType="">
		SELECT
				O.MEMBER_ID		    as MEMBER_ID,  
				O.ORDER_ID                   as ORDER_ID,
				O.PRODUCT_NAME               as PRODUCT_NAME,
				M.NAME				as NAME,
				M.EMAIL				as EMAIL
		FROM
				T_ORDER O,
				T_MEMBER M
		WHERE
				O.MEMBER_ID = M.ID AND M.ID = "user1"
	</select>

 

 


resultMap 을 사용하는이유

 

위에 코드처럼 select를 만들어 두개의 테이블을 JOIN 할 경우 resultType="" 에 무엇을 써야할지 난감하다 


 

 

1-1

 하지만 resultType이 아니라 resultMap 으로 변경 후  원하는 명을 적어준다 

	<select id="test1" resultMap="test2">
		SELECT
				O.MEMBER_ID		    as MEMBER_ID,  
				O.ORDER_ID                   as ORDER_ID,
				O.PRODUCT_NAME               as PRODUCT_NAME,
				M.NAME				as NAME,
				M.EMAIL				as EMAIL
		FROM
				T_ORDER O,
				T_MEMBER M
		WHERE
				O.MEMBER_ID = M.ID AND M.ID = "user1"
	</select>

 

 

 

 

1-2

resultMap 을 만들어 type으로는 map  id 는 위에 코드에서 resultMap 명으로 일치시켜준다

	<resultMap type="map" id="test2">
	</resultMap>

 

 

 

 

1-3

아래와 같이 column명은  select문의 column명을 적어주고 property는 자바에서 사용할 명을 적어준다 

여기까지가 Mapper에서의 작성이 끝!

	<resultMap type="map" id="test2">
		<result column="Member_ID" property="memberId"/>
		<result column="ORDER_ID" property="orderId"/>
		<result column="PRODUCT_NAME" property="productName"/>
		<result column="NAME" property="name"/>
		<result column="EMAIL" property="emlai"/>
	</resultMap>

 

 

 

 

1-4

DAO 에서 List<Map<String,Object>> 가 중요 Map형태의 데이터가 여러게?! 있기에 이러한 코드를 작성합니다.

	public List<Map<String, Object>> selectTest1(){
		
		return sqlSessin.selectList("order.test1");
	}

 

 

 

 

1-5

다음은 역시 위 코드 DAO에서 return 해주었다면 받아주는 코드를 작성해야합니다.

	@RequestMapping(value = "/test1")
	public String test1(Model model) {
		model.addAttribute("orderList", orderDAO.selcetTest1());
		return "폴더명/파일명";
	}

 

결과는 잘 출력되어서 나오는걸 확인 할 수 있었습니다.!

 

 

 

 


2) 번외 - resultType="map"

 

2-1 resultType으로 map을 해주어도 같은역활 !! 훨신 쉬다고 느껴질 수도 있으나 유지보수로는 위에 방법이 좋다

 

	<select id="test1" resultType="map">
		SELECT
				O.MEMBER_ID				as memberId,  
				O.ORDER_ID                            as orderId,
				O.PRODUCT_NAME                         as productName,
				M.NAME					as name,
				M.EMAIL					as email,
		FROM
				T_ORDER O,
				T_MEMBER M
		WHERE
				O.MEMBER_ID = M.ID AND M.ID = "user1"
	</select>

 

복사했습니다!