안녕하세요.. 눈팅만 하다가 질문이 있어 글을 올립니다.
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 명령어가 올바르게 종료되지 않았
습니다