티스토리 뷰
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인 경우는
SELECT a.id, a.name FROM 어떤테이블 a WHERE a.id =1
을 생성합니다.
여기서 $id$값이 바뀌어서 2가 되는 경우는
SELECT a.id, a.name FROM 어떤테이블 a WHERE a.id =2
를 또 PreparedStatement로 생성하게 됩니다.
따라서 $를 사용해서 변수를 바인딩하는 경우 해당 변수의 값이 많지 않은 경우에는
바인드할 변수가 없는 PreparedStatement처럼 사용할 수 있기 때문에 수행 능력을 높일 수 있지만,
게시판의 식별자처럼 계속 바뀌는 변수에 대해 사용하는 경우는 오히려 수행 능력이 떨어집니다.
그래서 대부분 테이블 이름과 같이 SQL자체가 바뀌는 경우 혹은 DDL에서 재활용할 부분이 많을 때에 사용합니다.
그리고 다음과 같은 경우에는 #를 사용하면 반드시 에러가 발생하고 $를 반드시 사용해야 합니다.
....
'' AS CLOSE_CONTENTS
FROM OPENQUERY(DOWELL, 'SELECT NAL,
SU,
REPLACE(PNA, ''\N'', '''') AS PNA,
DAN,
JKU,
MK,
PKU,
PKNO,
SBNO,
KCO,
BI,
JNO,
REC
FROM BT00
WHERE KCO = ''$AAAAAA$''
AND PKNO = ''$BBBBB$''
AND OKU = ''3''
AND UKU = ''2''') A
LEFT JOIN SD_CUSTOM_REMAIN_M A4 ON A4.SALE_CUST_CODE = A.KCO
....
위와 같이 문자열 속에 변수를 넣어야 하는 경우에는 #AAAA#를 사용하면 에러가 생기면 반드시 $AAAA$로 사용해야 한다.
2014/02/20 - 프로그램 개발에 유용한 3종 셋트 사이트
2014/02/13 - iBatis에서 ‘#’과 ‘$’ Escape 하기 삽질
2014/02/05 - 전자정부프레임웍에서 ibatis 쿼리 로그 생성
2014/01/25 - iBATIS Insert 시 자동으로 생성된 Key의 참조
'프로그램' 카테고리의 다른 글
MSSQL SELECT문을 이용한 UPDATE (1) | 2014.03.27 |
---|---|
자바스크립트의 defer, async (0) | 2014.03.27 |
MSSQL PRIMARY KEY 제거 (0) | 2014.02.25 |
MSSQL 중복 데이터 확인 (1) | 2014.02.25 |
NoSQL이란 무엇인가? 2번째 이야기 (0) | 2014.02.24 |
- Total
- Today
- Yesterday
- 부산
- jqm
- 자바
- jQuery
- 블로그 마케팅
- 블로그
- 소프트웨어공학
- 맛집
- ibatis
- 이클립스
- java
- JSP
- 전자정부프레임웍
- 톰캣
- OST
- 쿼리
- MySQL
- 가사
- 겨울왕국
- jstl
- 자바스크립트
- jQuery Mobile
- asp
- 프로그램
- Eclipse
- base64
- Tomcat
- Let it Go
- 연말정산
- MSSQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |