프로그램
iBatis에서 ‘#’과 ‘$’ Escape 하기 삽질
박대감
2014. 2. 13. 17:23
반응형
자바, iBatis를 사용하다가 DB의 데이터에 $가 있는걸 발견하였다.
쿼리에서 바로 삭제를 하지 않고 iBatis에서 해당 데이터만 따로 관리하고자 하였다.
그런데 iBatis에서 쿼리가 되지 않았다.
아래와 같이 작성을 하면 iBatis 오류가 난다.
SELECT MINOR_CODE,
CODE_KR_NM
FROM SM_SYSTEM_CODE
WHERE MINOR_CODE <! [CDATA[ <> ]]> '$'
AND MAJOR_CODE = #majorCode#
ORDER BY CAST(MINOR_CODE AS INT)
iBatis에서는 당연한 결과다.
iBatis 문법에서 $ 기호는 테이블이나 동적 컬럼을 해당하는데 $기호 뒤에 아무거도 없으니깐 에러가 난다.
하지만 데이터에 $기호가 들어간 걸 어떻게 찾는지 난감했다.
몇시간를 검색한 결과 해결책을 찾았다.
SELECT MINOR_CODE,
CODE_KR_NM
FROM SM_SYSTEM_CODE
WHERE MINOR_CODE <! [CDATA[ <> ]]> '$$'
AND MAJOR_CODE = #majorCode#
ORDER BY CAST(MINOR_CODE AS INT)
그냥 한번 더 적어주면 된다.
해결책이 다소 당황스럽다.
[프로그램] - 전자정부프레임웍에서 ibatis 쿼리 로그 생성
[프로그램] - iBATIS Insert 시 자동으로 생성된 Key의 참조
[프로그램] - mybatis 에서 mysql like 를 사용 하려면!!
반응형