728x90
반응형

뭐.. 이거 가끔 헷갈리기도 하죠.

흠..

 

일반적으로 대부분 사람들은  queryForObject , queryForList 를 대부분 사용하죠.

queryForMap을 사용할 겨우 꾀 유용한 경우들이 있는데.

Map 이 유용한것은 그 대표하는 키와 값으로 되어 있기 때문에. 데이터를 가져와 적은수에 루핑 로직을

구현할 수 있다는데 장점이 있겠지요.

 

일단 어떻게 사용하는지 봅시다.

 

*  user table

 ID          NAME

 a           aa

 b           bb

 c           cc

 

* query

<resultMap id="user.select.result" class="java.util.HashMap">

    <result property="id" column="ID"/>

    <result property="name" column="NAME"/>

</resultMap>

<select id="user.select" parameterClass="map" resultMap="user.select.result">

    select * from user

</select>

 

-- 먼저  queyForList 경우.

List list = sqlMapClient.queryForList("user.select",map);

 

-- 결과는

{id=a,name=aa}

{id=b,name=bb}

{id=c,name=cc}

 

-- queryForMap 경우

Map resultMap = sqlMapClient.queryForMap("user,select",map,"id");

 

-- 결과는

a={id=a,name=aa}

b={id=b,name=bb}

c={id=c,name=cc}

 

뭐 내용을 보시면 아시겠다시피 resultMap 에는 미리 지정한 "id" 에 해당하는 값이 key 로 되고

값이 result 로 지정한 객체가 입력되었음을 알 수 있습니다.

(물론 특정 컬럼에 값을 지정할 수도 있죠,인자가 하나 더 있는 메소드를 확인하세요.)

 

-- queryForMap 을 사용한 경우, user 중 id가 "b"  인 행의 name 값을 무엇인가?

System.out.println( resultMap.get("b").get("name") );

만약 List 로 가져왔다면 루핑과 분기문를 써야겠죠.

 

실제 프로젝트 상에서는 코드테이블을 가져올때 유용합니다.

그룹코드에 해당하는 코드내용들을 조회하여 그 일부 코드를 사용하거나 혹은 전체 코드를 사용할

경우 매우 유용하죠.

 

 

 

 

- queryForList 메소드는 한개 이상의 레코드를가졍와서 자바 객체의 List 만드는데 사용하는 거구요

 

List queryForList(String id, Objet parameter) 형식과

List queryForList(String id, Objet parameter, int skip, int max) 형식이 있습니다.

위에 형식은 호출하는 쿼리명과 거기에 필요한 파라메타만 던지는 방법이고

아래 형식은 레코드 결과값을 skip에서 max 값까지의 레코드만 가져오는 방법입니다.

 

- queryForMap 메소드는 한개혹은 그 이상의 레코드를 가져 올때 List 대신에 자바객체 Map을 반환 합니다.

 

ex)   Map accountMap = sqlMap.queryForMap("", null, "accountId","username")

   // 맵의 Key로 accountId 프로퍼티를 그리고 값으로 계좌의 이름(username)만을 가지는 Map 만드는 겁니다.

  

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,