1) SELECT a.id, a.name FROM 어떤테이블 a WHERE a.id = #id# 2) SELECT a.id, a.name FROM 어떤테이블 a WHERE a.id = $id$ 를 놓고 설명을 드리자면 1)의 경우 iBatis는 다음과 같은 PreparedStatement를 생성해서 사용하게 됩니다. SELECT a.id, a.name FROM 어떤테이블 a WHERE a.id = ? 따라서 #id#에 설정되는 값이 바뀌어도 위의 PreparedStatement를 재사용하게 되고, DB입장에서도 이미 컴파일된 SQL을 사용하게 됩니다. 하지만 2)의 경우 iBatis는 $id$를 마치 상수와 같이 처리해서 PreparedStatement를 생성하게 됩니다. 만약 $id$가 1인 경우는 S..
자바, 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 문법에서 $ 기호는 테이블이나 동적 컬럼을 해당하는데 $기호 뒤에 아무거도 없으니깐 에러가 난다. 하지만 데이터에 $기호가 들어간 걸 어떻게 찾는지 난감했..