ibatis에서 리턴 받을 resultClass에 대한 질문입니다 ㅜㅜ
- 작성자 :
- 임*재
- 작성일 :
- 2011-09-05 09:27:24
- 조회수 :
- 2,142
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕하세요 .. .
에고 이런걸 정말 질문에 올리기 싫은데.. 이유를 못찾아이렇게 글을 올려봐요
전체 소스를 올리기에는 많으니 간락하게 질문하겠습니다.
하다가 원인을 못찾아서요 ㅜㅜ 일단 일반 게시물처럼 단순하게
값을 조회하고 등록하고 상세보고 이런건데요 ..
목록 조회, 등록은 잘되는데 클래스로 리턴받도록 한 상세보기 가 안되어서요 ㅜㅜ
방법은 이렇게했습니다
클래스 = 서비스.detail(클래스);
이렇게 해서 dao까지 잘가고~! sql까지 잘갑니다~
dao에서는
return (클래스)selectByPk(sqlId, 클래스);
해가지고
<typeAlias alias="클래스Name" type="클래스위치"/>
<select id="sqlId" parameterClass="클래스Name" resultClass="클래스Name">
이렇게 해서 sql의 파라미터까지는 잘받아와요..
그런데 문제가 resultClass 을 받지를 못하네요 ㅜㅜ
쿼리문도 단순하고 로그에 찍히는 퀴리문도 잘들어가고 파라미터도 잘넘어가고요
그후
log4g debug 에서
[java.sql.ResultSet] {rset-100458} ResultSet
이후 받아오는 값이 넘어가야되는데 그후진행은 없어져버려요..
제가 먼가 빼먹은것인지.. 아니면 먼가 따로 해야되는건지.. ㅠㅠ
도움좀 부탁드립니다 ... 흑흑..
근데 제가 이렇게 적어놓고 보시더라도 이해가 잘안되실수도잇겠네요 ㅡㅡ;; 적고있는제가 봐도 이해가 안될수도 ...
ㅠㅠ
아 그리고 dao 에서 selectByPk <-- 이건 그냥 쓰면되는건가요? 따로 어디 추가되는건 없는거지요? sql까지 잘오고 리턴되는데 값이 안들어가는거라 어딜봐야될지 ㅜㅜ
에고 이런걸 정말 질문에 올리기 싫은데.. 이유를 못찾아이렇게 글을 올려봐요
전체 소스를 올리기에는 많으니 간락하게 질문하겠습니다.
하다가 원인을 못찾아서요 ㅜㅜ 일단 일반 게시물처럼 단순하게
값을 조회하고 등록하고 상세보고 이런건데요 ..
목록 조회, 등록은 잘되는데 클래스로 리턴받도록 한 상세보기 가 안되어서요 ㅜㅜ
방법은 이렇게했습니다
클래스 = 서비스.detail(클래스);
이렇게 해서 dao까지 잘가고~! sql까지 잘갑니다~
dao에서는
return (클래스)selectByPk(sqlId, 클래스);
해가지고
<typeAlias alias="클래스Name" type="클래스위치"/>
<select id="sqlId" parameterClass="클래스Name" resultClass="클래스Name">
이렇게 해서 sql의 파라미터까지는 잘받아와요..
그런데 문제가 resultClass 을 받지를 못하네요 ㅜㅜ
쿼리문도 단순하고 로그에 찍히는 퀴리문도 잘들어가고 파라미터도 잘넘어가고요
그후
log4g debug 에서
[java.sql.ResultSet] {rset-100458} ResultSet
이후 받아오는 값이 넘어가야되는데 그후진행은 없어져버려요..
제가 먼가 빼먹은것인지.. 아니면 먼가 따로 해야되는건지.. ㅠㅠ
도움좀 부탁드립니다 ... 흑흑..
근데 제가 이렇게 적어놓고 보시더라도 이해가 잘안되실수도잇겠네요 ㅡㅡ;; 적고있는제가 봐도 이해가 안될수도 ...
ㅠㅠ
아 그리고 dao 에서 selectByPk <-- 이건 그냥 쓰면되는건가요? 따로 어디 추가되는건 없는거지요? sql까지 잘오고 리턴되는데 값이 안들어가는거라 어딜봐야될지 ㅜㅜ
A
문의하신 내용에 답변드립니다.
우선 iBatis에서 resultClass 의 경우 해당 클래스의 변수가 select 한 컬럼명과 동일해야 값이 담겨져 넘어 옵니다. 컬럼명과 변수명이 같은지 확인 부탁드리고, 만약 다를 경우에는 해당 클래스를 ResultMap으로 설정하시고 변수와 컬럼을 아래 예시와 같이 매핑해 주셔야 합니다.
[설정 예시]
<typeAlias alias="FileVO" type="egovframework.com.cmm.service.FileVO"/>
<resultMap id="fileList" class="egovframework.com.cmm.service.FileVO">
<result property="atchFileId" column="ATCH_FILE_ID" columnIndex="1"/>
<result property="fileCn" column="FILE_CN" columnIndex="2"/>
</resultMap>
<select id="FileManageDAO.selectFileList" parameterClass="FileVO" resultMap="fileList" >
<![CDATA[
SELECT a.ATCH_FILE_ID, b.FILE_CN
FROM COMTNFILE a, COMTNFILEDETAIL b
WHERE a.ATCH_FILE_ID = #atchFileId#
AND a.ATCH_FILE_ID = b.ATCH_FILE_ID
]]>
</select>
그럼 업무에 참고하시기 바랍니다.
우선 iBatis에서 resultClass 의 경우 해당 클래스의 변수가 select 한 컬럼명과 동일해야 값이 담겨져 넘어 옵니다. 컬럼명과 변수명이 같은지 확인 부탁드리고, 만약 다를 경우에는 해당 클래스를 ResultMap으로 설정하시고 변수와 컬럼을 아래 예시와 같이 매핑해 주셔야 합니다.
[설정 예시]
<typeAlias alias="FileVO" type="egovframework.com.cmm.service.FileVO"/>
<resultMap id="fileList" class="egovframework.com.cmm.service.FileVO">
<result property="atchFileId" column="ATCH_FILE_ID" columnIndex="1"/>
<result property="fileCn" column="FILE_CN" columnIndex="2"/>
</resultMap>
<select id="FileManageDAO.selectFileList" parameterClass="FileVO" resultMap="fileList" >
<![CDATA[
SELECT a.ATCH_FILE_ID, b.FILE_CN
FROM COMTNFILE a, COMTNFILEDETAIL b
WHERE a.ATCH_FILE_ID = #atchFileId#
AND a.ATCH_FILE_ID = b.ATCH_FILE_ID
]]>
</select>
그럼 업무에 참고하시기 바랍니다.