mybatis에서 foreach 재질문
- 작성자 :
- 서*
- 작성일 :
- 2014-02-19 15:44:01
- 조회수 :
- 1,159
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
foreach에 대해 처음 돌아왔던 답변은
답변 시작-----------------------------------
안녕하세요.
표준프레임워크센터입니다.
ibatis에서 사용하던 parameterClass 속성은
mybatis에서 parameterType으로 변경되었습니다.
parameterClass="java.util.HashMap 를 parameterType="java.util.HashMap"으로 변경해보세요.
감사합니다.
답변 끝------------------------------------
였습니다.그래서 똑같이 바꿨는데 안되었습니다
그래서 웹상에서 찾아보니 parameterType="hashmap"으로 변경하라고 해서 변경해봤지만 여전히 아래와 같은 메시지가 나오고 있습니다
에러 시작----------------------------------
요소 유형 "select"에 대한 "parameterType" 속성을 선언해야 합니다.
에러 끝----------------------------------
라고 여전히 나오고 있는 중 입니다.
현재 xml 부분은
<select id="testDAO.testList" parameterType="hashmap" resultMap="testList">
쿼리....
WHERE IN
<foreach collection="testList" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
로 되어있습니다
제 이름으로 검색 후 답변 부탁드립니다.
글에 댓글을 못걸어서 연속성이 없어져버렸네요.
답변 시작-----------------------------------
안녕하세요.
표준프레임워크센터입니다.
ibatis에서 사용하던 parameterClass 속성은
mybatis에서 parameterType으로 변경되었습니다.
parameterClass="java.util.HashMap 를 parameterType="java.util.HashMap"으로 변경해보세요.
감사합니다.
답변 끝------------------------------------
였습니다.그래서 똑같이 바꿨는데 안되었습니다
그래서 웹상에서 찾아보니 parameterType="hashmap"으로 변경하라고 해서 변경해봤지만 여전히 아래와 같은 메시지가 나오고 있습니다
에러 시작----------------------------------
요소 유형 "select"에 대한 "parameterType" 속성을 선언해야 합니다.
에러 끝----------------------------------
라고 여전히 나오고 있는 중 입니다.
현재 xml 부분은
<select id="testDAO.testList" parameterType="hashmap" resultMap="testList">
쿼리....
WHERE IN
<foreach collection="testList" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</select>
로 되어있습니다
제 이름으로 검색 후 답변 부탁드립니다.
글에 댓글을 못걸어서 연속성이 없어져버렸네요.
A
안녕하세요.
표준프레임워크센터입니다.
1) 먼저 값을 넘기고 받아오는 자바코드까지 함께 첨부해주셨으면 좋을 것 같습니다.
부분적으로 질문을 해주시면 부분적으로 답변을 드릴 수 밖에 없습니다.
MyBatis 매뉴얼부터 차근차근 읽어보신 후 적용하셔야할 것 같습니다.
http://mybatis.github.io/mybatis-3/ko/dynamic-sql.html
그리고 두번째 답변 수정합니다.
select 쿼리의 경우, 조회 결과값을 바인딩할 Result Object가 필요합니다.
결과값을 바인딩 할 오브젝트는 resultMap에 지정해주시면 됩니다.
질문자께서는 resultMap="testList"라고 설정하셨으므로,.
해당 xml 파일에 <resultMap id="testList" ...> .. </resultMap> 형태로 설정이 되어 있을 것으로 예상됩니다
2) <foreach>에 collection 속성에는 list나 array만 지정이 가능합니다. (collection="list" or collection="array")
따라서 질문자께서는 collection에 지정한 testList를 지우시고, list 형태로 값을 받아오시려면 list라고 설정하셔야합니다.
3) SQL작성 시 IN 연산자를 사용하실 때 IN 연산 결과로 나오는 값과 비교할 컬럼이 빠져있는 것 같습니다.
해결이 안되시면 의도하는 결과값과 작성하신 코드까지 첨부해주시기 바랍니다.
직접 테스트 후 다시 답변드리겠습니다.
감사합니다.
표준프레임워크센터입니다.
1) 먼저 값을 넘기고 받아오는 자바코드까지 함께 첨부해주셨으면 좋을 것 같습니다.
부분적으로 질문을 해주시면 부분적으로 답변을 드릴 수 밖에 없습니다.
MyBatis 매뉴얼부터 차근차근 읽어보신 후 적용하셔야할 것 같습니다.
http://mybatis.github.io/mybatis-3/ko/dynamic-sql.html
그리고 두번째 답변 수정합니다.
select 쿼리의 경우, 조회 결과값을 바인딩할 Result Object가 필요합니다.
결과값을 바인딩 할 오브젝트는 resultMap에 지정해주시면 됩니다.
질문자께서는 resultMap="testList"라고 설정하셨으므로,.
해당 xml 파일에 <resultMap id="testList" ...> .. </resultMap> 형태로 설정이 되어 있을 것으로 예상됩니다
2) <foreach>에 collection 속성에는 list나 array만 지정이 가능합니다. (collection="list" or collection="array")
따라서 질문자께서는 collection에 지정한 testList를 지우시고, list 형태로 값을 받아오시려면 list라고 설정하셔야합니다.
3) SQL작성 시 IN 연산자를 사용하실 때 IN 연산 결과로 나오는 값과 비교할 컬럼이 빠져있는 것 같습니다.
해결이 안되시면 의도하는 결과값과 작성하신 코드까지 첨부해주시기 바랍니다.
직접 테스트 후 다시 답변드리겠습니다.
감사합니다.