Background Image

FORUM

조회 수 11213 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
 Linux 64bit
CUBRID Ver.
 서버 9.2.24.0002
CUBRID TOOL Ver.
 큐브리드 매니저 9.3.6.001
응용 환경(API)
 java / mybatis 3.2.8 / cubrid jdbc 9.2.24.0002 사용

* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 재현 가능한 Source와 SQL
관련 테이블(인덱스, 키정보 포함) 정보 CUBRID 홈 디렉토리 아래 log 디렉토리 압축


-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------


다음과 같이, SELECT시 서브 쿼리의 결과를 LIST 데이터 타입으로 받도록 했습니다.

(아래 쿼리는 상황 설명을 위한 예시입니다.)


SELECT LIST( SELECT 1 UNION SELECT 2 UNION SELECT 3 ) AS no_list


위와 같이 하면, 큐브리드 매니저 상으로는 {1,2,3} 으로 확인이 되는데요,

상기 쿼리를 mybatis를 통해 수행하게 되면 해당 컬럼의 값이 null 로 확인되어 문의드립니다.


큐브리드의 LIST / SET 등의 데이터 타입이 JAVA의 java.util.list로 매칭되어 반환될 것이라고 기대를 했었는데요,

mybatis를 통해 위 결과를 Java List 형으로 받을 수 없을까요? 아니면 다른 체크 포인트가 있는 것일까요?


도움 부탁드립니다^^;


고맙습니다. :-)

  • ?
    진우진 2016.03.22 09:28
    위 쿼리의 경우
    JAVA에서 mybatis로부터 쿼리 결과를 받을 때
    전체 결과는 java.lang.List 타입,
    List 안에 포함된 각각의 행은 HashMap,
    결과 행의 컬럼값은 HashMap에 "no_list" key에 대한 value 값으로 접근 가능합니다.

    List에 접근 -> 결과셋의 row는 List 내의 HashMap<key,value> 객체들로 구성되므로 하나의 HashMap 객체에 접근 ->
    HashMap의 no_list 키가 가리키는 값에 접근

    위 순서로 되야 합니다.

    쿼리에서 SELECT 문으로 가져올 값이 큐브리드의 LIST 타입이므로 자바에서는 Object 타입으로 받고
    Object 에서 오버라이드 되지 않은 toString 메소드는 메모리 주소를 리턴하므로
    Arrays 클래스의 toString 메소드를 이용하여 주소가 아닌 실제의 값에 접근 가능합니다. 

    아래 간단한 예제 소스를 만들어 첨부해드리겠습니다.


    Mybatis Mapper 를 아래와 같이 설정한 뒤
       <select id ="selectSample2" parameterType="java.util.HashMap" resultType= "java.util.HashMap">
            select {1,2,3} as no_list from tbl;
        </select >

    컨트롤러 소스에서 다음과 같이 접근해주면 될 것 같습니다.
    0번 index를 가진 행(HashMap)에서 "no_list" 키의 값을 자바 기본 제공되는 Arrays 클래스의 toString() 메소드로 출력하는 방법을
    사용하였습니다.

    List<HashMap<String, Object>> outputs2 = sqlSession.selectList("userControlMapper.selectSample2", input); 
    System.out.println(Arrays.toString((Object[])outputs2.get(0).get("no_list")));

    위 접근 방법을 토대로 응용하시면 될 것 같습니다. 참고로 쿼리 결과 {1,2,3}에 대한 자바 내 타입은 Ljava.lang.Integer 형태로 나왔었습니다.
    프레임워크 및 언어간 형 변환에 관한 질답은 국내 사이트들보다 해외 프로그래밍 커뮤니티 및 포럼을 찾아보시면 다양한 방면의 질답을 찾으시기 수월하실겁니다. 
    위의 예제 소스는 테스트용으로 결과 나오는 방법을 설명하기 위한 목적으로만 작성한 것으로
    검색해보시면 분명 제가 적어드린 내용보다 더 편하고 간결한 방법이 있을것으로 생각됩니다. 
    감사합니다.
  • ?
    차오이 2016.03.22 21:28

    진우진님 자세한 답변 고맙습니다 ^^

    적어주신 내용 참고하겠습니다



List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 CUBRID 사용자를 위한 DBeaver 도구 출시 안내 admin 2024.04.23 49
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4458
914 데이트타입 컬럼의 주를 구하는 함수는? 2 초보 2010.03.31 11081
913 cubrid_prepare 오류 질문드립니다 4 엠지 2012.05.17 11086
912 Oledb 문자열 값 가져오기 실패 문의입니다. 4 콩이아부지 2013.03.11 11088
911 윈도우 큐브리드 메니저로 리눅스 접속 3 노스 2010.09.14 11092
910 아카이브 로그 자동 삭제 및 볼륨 자동 생성 문의 1 소라게 2013.11.22 11105
909 linux demodb구동시 에러 1 시나브로 2013.09.12 11105
908 CUBRID 매니저 서버 연결 오류 3 file 지용 2009.09.09 11123
907 온라인 메뉴얼이 firefox에서 동작이 안되네요. 1 flypig 2009.03.25 11128
906 브로커 타임아웃 설정 가능여부 문의 1 장경수 2014.01.20 11130
905 ODBC를 사용해서 디비작업이 안되요 1 요한 2010.04.15 11142
904 CUBRID DB 32bit에서 64bit 변경 방법 1 동훈이 2016.09.07 11143
903 serial 또는 auto increment 현재값 수정 1 소라게 2014.02.25 11161
902 쿼리수행시 Lock 관련 문의 2 nagh 2014.12.11 11172
901 큐브리드 메니저 2.2 에서 엑셀파일 임포트는 어떻게? 1 penmouse 2010.06.05 11177
900 Java SP 질문 9 hyperhand 2009.12.23 11178
899 GRANT 주기 [Cannot issue GRANT/REVOKE to owner of a class] 에러 발생 1 보물섬 2016.07.26 11178
898 db 의 데이터를 다른곳에서 똑 같이 만들려고 하는데요.. 3 coolbyj 2009.10.23 11187
897 4.0 최초 설치후 DB 구동 불가 증상 7 reerror 2011.11.10 11196
896 9.2 업그레이드 후 spread.datasource가 작동 안함!!!!! 한종희 2014.01.04 11206
895 foreign key로 등록하여 다른 테이블에서 참조한 키값을 출력하고 싶습니다.(ER모델) 1 살구맛 2012.10.12 11209
Board Pagination Prev 1 ... 150 151 152 153 154 155 156 157 158 159 ... 200 Next
/ 200

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales