ibatis 동적쿼리 오류 관련 문의드립니다.

894 views
Skip to first unread message

zeno

unread,
Jan 4, 2012, 3:03:05 AM1/4/12
to Korea Spring User Group
안녕하세요.. 눈팅만 하다가 질문이 있어 글을 올립니다.

ibatis 에서 동적쿼리를 구현하고 있는데요..
오류가 나고 있습니다.
sql 오류이긴 한데, 아래 로그중...
Executing Statement: 부분이 태그가 같이 출력되고 있습니다.

정적쿼리로 구성했을때는 잘 구동이 되구요.
아래처럼 dynamic 으로 했을때, 오류가 나는데.. 몇시간째 삽질중인데..
해결하지 못했네요.. 고수님들의 조언 부탁드리겠습니다.

꾸벅~

----------------------------------------------------------
1. Parameter : HashMap
----------------------------------------------------------

HashMap<String,Object> paramMap = new HashMap<String,Object>();
paramMap.put("desc", "");
paramMap.put("keyword", "");
paramMap.put("use_fg", "");
paramMap.put("chg_auth", "");

----------------------------------------------------------
2. sqlMap
----------------------------------------------------------
<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">

<sqlMap namespace="mdcd0100">

<select id="selectData" parameterClass="java.util.HashMap"
remapResults="true"
resultClass="java.util.HashMap">



<![CDATA[
SELECT G.GCODE
,G.DESC_KO
,G.DESC_EN
,G.KEY_WORD
,G.USE_FG
,G.CHG_AUTH
,G.SORT_SQ
,COUNT(C.CODE) CODE_CNT
,G.REMARKS
,G.ADD_DT
,G.ADD_ID
,G.ADD_NM
,G.GCODE H_GCODE
FROM MDCD_GCODE G
,MDCD_CODE C
WHERE G.GCODE = C.GCODE(+)


<dynamic>
<isNotEmpt prepend=" AND " property="desc">
(REPLACE(G.DESC_KO, ' ', '') LIKE '%'|| REPLACE(#desc#, ' ', '')
||'%'
REPLACE(G.DESC_EN, ' ', '') LIKE '%'|| REPLACE(#desc#, ' ', '')
||'%')
</isNotEmpt>

<isNotEmpt prepend=" AND " property="keyword">
G.KEY_WORD LIKE '%'||#keyword#||'%'
</isNotEmpt>

<isNotEmpt prepend=" AND " property="use_fg">
G.USE_FG = #use_fg#
</isNotEmpt>

<isNotEmpt prepend=" AND " property="chg_auth">
G.CHG_AUTH = #chg_auth#
</isNotEmpt>
</dynamic>


AND G.STATUS <> 'D'
GROUP BY G.GCODE
,G.DESC_KO
,G.DESC_EN
,G.KEY_WORD
,G.USE_FG
,G.CHG_AUTH
,G.SORT_SQ
,G.REMARKS
,G.ADD_DT
,G.ADD_ID
,G.ADD_NM
]]>


</select>

</sqlMap>

----------------------------------------------------------
3. 로그
----------------------------------------------------------
DEBUG [http-bio-8080-exec-7] - {pstm-100007} Executing Statement:

SELECT G.GCODE
,G.DESC_KO
,G.DESC_EN
,G.KEY_WORD
,G.USE_FG
,G.CHG_AUTH
,G.SORT_SQ
,COUNT(C.CODE) CODE_CNT
,G.REMARKS
,G.ADD_DT
,G.ADD_ID
,G.ADD_NM
,G.GCODE H_GCODE
FROM MDCD_GCODE G
,MDCD_CODE C
WHERE G.GCODE = C.GCODE(+)
<isNotEmpt prepend=" AND " property="desc">
(REPLACE(G.DESC_KO, ' ', '') LIKE '%'||
REPLACE('', ' ',
'') ||'%'
REPLACE(G.DESC_EN, ' ', '') LIKE '%'||
REPLACE('', ' ',
'') ||'%')
</isNotEmpt>
<isNotEmpt prepend=" AND " property="keyword">
G.KEY_WORD LIKE '%'||''||'%'
</isNotEmpt>
<isNotEmpt prepend=" AND " property="use_fg">
G.USE_FG = ''
</isNotEmpt>
<isNotEmpt prepend=" AND " property="chg_auth">
G.CHG_AUTH = ''
</isNotEmpt>
AND G.STATUS <> 'D'
GROUP BY G.GCODE
,G.DESC_KO
,G.DESC_EN
,G.KEY_WORD
,G.USE_FG
,G.CHG_AUTH
,G.SORT_SQ
,G.REMARKS
,G.ADD_DT
,G.ADD_ID
,G.ADD_NM

DEBUG [http-bio-8080-exec-7] - Returned connection 8639354 to pool.
================ # invokeSelect :
com.ibatis.common.jdbc.exception.NestedSQLExc
eption:
--- The error occurred while applying a parameter map.
--- Check the mdcd0100.selectData-InlineParameterMap.
--- Check the statement (query failed).
--- Cause: java.sql.SQLException: ORA-00933: SQL 명령어가 올바르게 종료되지 않았
습니다


나창훈

unread,
Jan 4, 2012, 3:07:27 AM1/4/12
to ks...@googlegroups.com
<isNotEmpty> �ƴѰ���?

2012-01-04 ���� 5:03, zeno �� ��:
> �ȳ��ϼ���.. ���ø� �ϴٰ� ���� �־� ���� �ø��ϴ�.
>
> ibatis ���� ���������� �����ϰ� �ִµ���..
> ���� ���� �ֽ��ϴ�.
> sql �����̱� �ѵ�, �Ʒ� �α���...
> Executing Statement: �κ��� �±װ� ���� ��µǰ� �ֽ��ϴ�.
>
> ���������� ������������ �� ������ �DZ���.
> �Ʒ�ó�� dynamic ���� ������, ���� ���µ�.. ��ð�° �������ε�..
> �ذ����� ���߳׿�.. ����Ե��� ���� ��Ź�帮�ڽ��ϴ�.
>
> �ٹ�~

> 3. �α�

> --- Cause: java.sql.SQLException: ORA-00933: SQL ��ɾ �ùٸ��� ������� �ʾ�
> ���ϴ�
>
>

Jaeyong Kim

unread,
Jan 4, 2012, 3:08:49 AM1/4/12
to ks...@googlegroups.com
<![CDATA[  이놈으로 감싸도 있는 부분 땜시 그런거  같네요.

이놈으로 감싸면 그안에 있는  <isNotEmpt  같은 놈들도 다 같이 쿼리로 넘어갑니다.

<![CDATA[  부분은 필요한 부분만 걸어주세요. ^^


2012년 1월 4일 오후 5:03, zeno <ihjd...@gmail.com>님의 말:


--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.


Jaeyong Kim

unread,
Jan 4, 2012, 3:10:02 AM1/4/12
to ks...@googlegroups.com
아, 나창훈님 말씀도 맞네요; ㅎㅎ

2012년 1월 4일 오후 5:08, Jaeyong Kim <yoy...@gmail.com>님의 말:

zeno

unread,
Jan 4, 2012, 3:40:01 AM1/4/12
to Korea Spring User Group
아.. 그렇군요..

정말 감사합니다...
이제 실행이 잘 됩니다...

정말 감사드립니다.

아래 답변 주신 재영님께도 감사드립니다.

^^


On 1월4일, 오후4시08분, Jaeyong Kim <yoyo...@gmail.com> wrote:
> <![CDATA[ 이놈으로 감싸도 있는 부분 땜시 그런거 같네요.
>
> 이놈으로 감싸면 그안에 있는 <isNotEmpt 같은 놈들도 다 같이 쿼리로 넘어갑니다.
>
> <![CDATA[ 부분은 필요한 부분만 걸어주세요. ^^
>
> 2012년 1월 4일 오후 5:03, zeno <ihjdm...@gmail.com>님의 말:

zeno

unread,
Jan 4, 2012, 3:41:04 AM1/4/12
to Korea Spring User Group
말씀하신 부분이 틀렸네요..
실제 돌아가는 코드는 정확한데..로그 붙이면서 실수했습니다.
답변 감사드립니다.
Reply all
Reply to author
Forward
0 new messages