[Mybatis] Oracle Store Procedure Cursor 값 HashMap으로 받기 by JD



1. 먼저 sqlmap.xml 의 mapper 태그 안에 resultMap을 정한다. (mybatis 3.0 기준)

  <mapper namespace="cm">
<resultMap type="java.util.HashMap" id="procResultMap1">
</resultMap>
<!-- HashMap으로 결과값을 동적으로 받는다. --> 
  ....

2. 아래에 호출할 패키지와 커서를 적어준다.

<select id="CMsearch"  statementType="CALLABLE"  parameterType="hashmap"  resultType="java.util.HashMap">
{call ${pkgName}(#{vcursor
, mode=OUT
, jdbcType=CURSOR
, javaType=ResultSet
, resultMap=procResultMap1})
}
</select>
<!-- 커서 속성중 resultMap은 위에서 정해준  resultMap 의 id와 매칭 된다.-->     

3. Java 로직

......

   getSqlSession().selectList("cm.CMsearch", rowMap); 
// 여기서  rowMap 은 HashMap으로 담긴 파라미터이다.
   ArrayList list = (ArrayList)rowMap.get("vcursor"); 
               // 파라미터로 던진 rowMap에 vcursor를 키값으로 하여 결과값이 List형태로 담겨져 온다
              // vcursor 라는 키명은 위에서  쿼리문 작성시  Cursor자리에 적은 변수명을 따라간다.
             // 굳이 HashMap이 아닌 VO 객체를 이용하여도 상관없다.
.....                                                                           

덧글

  • 천재 2014/11/20 18:05 # 삭제 답글

    고맙습니다

    큰도움이 되었네요^^
댓글 입력 영역


통계 위젯 (화이트)

12
26
30319