mybatis 에서 프로시져 out cursor 의 메타데이터 정보조회방법
- 작성자 :
- 양*일
- 작성일 :
- 2018-02-12 15:27:49
- 조회수 :
- 2,543
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
mybatis 에 sys_refcursor 를 이용한 프로시져에 다건의 out cursor 를 조회하는데 데이터가 존재할경우엔
정상처리되나 결과가 없을 경우엔 null 값을 리턴합니다.
조회결과가 없을 경우엔 메타데이터를 이용해 컬럼정보를 조회하는 방법이 있는지요?
(투비소프트 제품을 사용하는데 dataset이 없어지네요.)
<select id="callUserInfo" statementType="CALLABLE" parameterType="java.util.Map" >
{ CALL_USERID_SELECT (
#{ID_USER, mode=IN, jdbcType=VARCHAR, javaType=string},
#{OUTPUT1,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=output1},
#{OUTPUT2,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=output2}
) }
</select>
<resultMap id="output1" type="hashmap">
<result property="USER" column="USER" jdbcType="VARCHAR" javaType="string"/>
<result property="CORP" column="CORP" jdbcType="VARCHAR" javaType="string"/>
<result property="DEPT" column="DEPT" jdbcType="VARCHAR" javaType="string"/>
</resultMap>
<resultMap id="output2" type="hashmap">
<result property="DOMAIN" column="DOMAIN" jdbcType="VARCHAR" javaType="string"/>
</resultMap>
정상처리되나 결과가 없을 경우엔 null 값을 리턴합니다.
조회결과가 없을 경우엔 메타데이터를 이용해 컬럼정보를 조회하는 방법이 있는지요?
(투비소프트 제품을 사용하는데 dataset이 없어지네요.)
<select id="callUserInfo" statementType="CALLABLE" parameterType="java.util.Map" >
{ CALL_USERID_SELECT (
#{ID_USER, mode=IN, jdbcType=VARCHAR, javaType=string},
#{OUTPUT1,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=output1},
#{OUTPUT2,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=output2}
) }
</select>
<resultMap id="output1" type="hashmap">
<result property="USER" column="USER" jdbcType="VARCHAR" javaType="string"/>
<result property="CORP" column="CORP" jdbcType="VARCHAR" javaType="string"/>
<result property="DEPT" column="DEPT" jdbcType="VARCHAR" javaType="string"/>
</resultMap>
<resultMap id="output2" type="hashmap">
<result property="DOMAIN" column="DOMAIN" jdbcType="VARCHAR" javaType="string"/>
</resultMap>
A
안녕하세요.
표준프레임워크 센터입니다.
표준프레임워크에서는 문의하신 내용의 기능을 별도로 제공하고 있지 않습니다.
또한, mybatis에서도 관련 기능이 있지 않을 걸고 알고 있습니다.
mybatis(ibatis)의 특성으로 결과값이 없는 경우 resultmap이 생성되지 않아 header(컬럼정보)정보를 가질 수 없습니다.
구현하시려면 jdbc의 ResultSet을 통해 ResultSetMetaData정보통해 얻을 수 있습니다만, 이 또한 요건에 (mybatis사용) 맞지는 않는 듯합니다.
resultset을 통한 metadata관련 내용은 [http://sararing.tistory.com/155] 여기서 참고 하세요.
다른 방법으로는 프로시져에서 데이터가 없는 경우 if not exist 경우를 별도 지정하여
더미 데이터 1 Row를 생성하여 반환하는 방법도 있을 수 있겠습니다.
이 또한 개발 요건에 맞는지는 확인해 보시기 바랍니다.
감사합니다.
표준프레임워크 센터입니다.
표준프레임워크에서는 문의하신 내용의 기능을 별도로 제공하고 있지 않습니다.
또한, mybatis에서도 관련 기능이 있지 않을 걸고 알고 있습니다.
mybatis(ibatis)의 특성으로 결과값이 없는 경우 resultmap이 생성되지 않아 header(컬럼정보)정보를 가질 수 없습니다.
구현하시려면 jdbc의 ResultSet을 통해 ResultSetMetaData정보통해 얻을 수 있습니다만, 이 또한 요건에 (mybatis사용) 맞지는 않는 듯합니다.
resultset을 통한 metadata관련 내용은 [http://sararing.tistory.com/155] 여기서 참고 하세요.
다른 방법으로는 프로시져에서 데이터가 없는 경우 if not exist 경우를 별도 지정하여
더미 데이터 1 Row를 생성하여 반환하는 방법도 있을 수 있겠습니다.
이 또한 개발 요건에 맞는지는 확인해 보시기 바랍니다.
감사합니다.