동적쿼리를 사용하고 싶습니다.
- 작성자 :
- 정*
- 작성일 :
- 2014-11-27 11:35:19
- 조회수 :
- 1,193
- 구분 :
- 기타
- 진행상태 :
- 완료
Q
<select id="distributeDAO.selectDataNpoiBass_S" parameterClass="searchDisVO" resultMap="npoiBass">
<![CDATA[
SELECT ~~~~~
AND 'STD00'||SUBSTR(ASORTCD,0,2) IN
]]>
<foreach item="legalCd" index="lastIndex" collection="list" open="(" separator="," close=")">
#{legalCd}
</foreach>
</select>
로 만들었는데
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonDAO': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in file [C:\eGovFrameDev-2.7.1-32bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\POI\WEB-INF\classes\egovframework\spring\context-sqlMap.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [egovframework/sqlmap/sql-map-config.xml]; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException; lineNumber: 96; columnNumber: 101; 요소 유형 "foreach"을(를) 선언해야 합니다.
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:300)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
에러가 납니다.
foreach를 빼면 정상 작동하구여 ..
설정을 바꿔보라고 해서
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
설정하라고 해서 변경해 봤더니 configuration 이 일치하지 않다는 다른 에러가 납니다.
동적 쿼리를 사용할 방법이 없나요?
사용하는 버전은 2.7 입니다.
<![CDATA[
SELECT ~~~~~
AND 'STD00'||SUBSTR(ASORTCD,0,2) IN
]]>
<foreach item="legalCd" index="lastIndex" collection="list" open="(" separator="," close=")">
#{legalCd}
</foreach>
</select>
로 만들었는데
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonDAO': Injection of resource dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlMapClient' defined in file [C:\eGovFrameDev-2.7.1-32bit\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\POI\WEB-INF\classes\egovframework\spring\context-sqlMap.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse config resource: class path resource [egovframework/sqlmap/sql-map-config.xml]; nested exception is com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMapConfig/sqlMap'. Cause: com.ibatis.common.xml.NodeletException: Error parsing XML. Cause: org.xml.sax.SAXParseException; lineNumber: 96; columnNumber: 101; 요소 유형 "foreach"을(를) 선언해야 합니다.
at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessPropertyValues(CommonAnnotationBeanPostProcessor.java:300)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
에러가 납니다.
foreach를 빼면 정상 작동하구여 ..
설정을 바꿔보라고 해서
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
설정하라고 해서 변경해 봤더니 configuration 이 일치하지 않다는 다른 에러가 납니다.
동적 쿼리를 사용할 방법이 없나요?
사용하는 버전은 2.7 입니다.
A
안녕하세요.
올려주신 로그는 ibatis 관련한 XML parsing 에러로그이고,
아래 두 개의 DOCTYPE 선언은 mybatis 관련 설정입니다.
뿐만 아니라 parameterClass는 ibatis에서 지원하는 속성이며, foreach는 mybatis에서 지원하는 dynamic sql 문법입니다.
두 프레임워크의 설정을 혼동하고 계신 것 같습니다. 사용하시려는 프레임워크에 맞춰서 기본 설정부터 수정하시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea3.0 > 데이터처리 > ibatis 또는 mybatis 가이드 참조
ibatis와 mybatis에서 지원하는 dynamic sql 설정이 각각 다르기 때문에
각 프레임워크의 사용방법과 설정방법을 먼저 확인, 숙지하신 후 사용하셔야할 것 같습니다.
감사합니다.
올려주신 로그는 ibatis 관련한 XML parsing 에러로그이고,
아래 두 개의 DOCTYPE 선언은 mybatis 관련 설정입니다.
뿐만 아니라 parameterClass는 ibatis에서 지원하는 속성이며, foreach는 mybatis에서 지원하는 dynamic sql 문법입니다.
두 프레임워크의 설정을 혼동하고 계신 것 같습니다. 사용하시려는 프레임워크에 맞춰서 기본 설정부터 수정하시기 바랍니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea3.0 > 데이터처리 > ibatis 또는 mybatis 가이드 참조
ibatis와 mybatis에서 지원하는 dynamic sql 설정이 각각 다르기 때문에
각 프레임워크의 사용방법과 설정방법을 먼저 확인, 숙지하신 후 사용하셔야할 것 같습니다.
감사합니다.