Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
1. #는 쿼리가 수행될 때, 다음과 같이 된다
SELECT * FROM USER WHERE
col = ?
parameter : [값]
|
?에 bind된 값이 들어가게 된다.
이 쿼리의 컴파일 된 내용을 재사용 할 수 있고, 파라미터에 따라 대입해주므로 효율적이다.
내부적으로 preparedStatement 객체에서 ? 에 들어갈 파라미터의 값을 set 해줌으로써 사용이 된다.
* preparedStatement는 한번 수행한 쿼리를 캐싱하는 객체
사용 용도 >>
#일 경우, 값에 사용한다.
myBatis : 컬럼명 = #{값}
iBatis : 컬럼명 = #값#
* 쿼리에 작은 따옴표가 붙게 된다.
2. $는 쿼리가 수행될 때, 다음과 같이 된다
SELECT * FROM USER
WHERE
col = 값
|
값이 넣어진 쿼리 자체로 수행이 된다.(상수)
즉, 문장 전체가 preparedStatement가 된다.
사용 용도 >>
$일 경우는 컬럼명이 동적으로 바뀌어야 할 때 사용한다. 또는 테이블명.
myBatis : ${컬럼명} = #{값}
iBatis : $컬럼명$ = #{값}
* 쿼리에 작은따옴표가 붙지 않는다.
값에 $를 사용하면 스트링의 경우 작은따옴표로 감싸지지 않기 때문에 에러 발생한다.
이렇게 사용하지 않으면 unknown column 이나 There is no readable property named 등등의 에러가 뜨게 된다
댓글 0
번호 | 제목 | 날짜 | 조회 수 |
---|---|---|---|
13 | AIX 7.1에 Python 2.7.11설치하기 | 2016.10.06 | 1253 |
12 | DBCP Datasource(org.apache.commons.dbcp.BasicDataSource) 설정 및 속성 설명 | 2016.09.26 | 966 |
11 | [Mybatis]Spring과 연동하지 않고 Java+Mybatis 형태의 프로그램 샘플소스 | 2016.09.01 | 1014 |
10 | 초기 오류(java.lang.NoSuchMethodError)에 따른 후속 작업에서 오류(java.lang.NoClassDefFoundError)가 발생되는 상황(quartz에서 주기적으로 작업시) | 2016.08.29 | 741 |
9 | servlet-api를 jar형태로 build할때 포함하지 말고 java 설치 위치의 jre/lib/ext에 복사하여 사용하는것이 좋다. | 2016.08.10 | 650 |
8 | Windows에서 sbt개발환경 구축 방법(링크) | 2016.06.02 | 272 |
7 | python 2.6.6에서 print 'A=' 형태의 사용이 python 3.5.1에서 오류(SyntaxError: Missing parentheses in call to 'print') 발생함.. | 2016.05.27 | 640 |
6 | CentOS6에 python3.5.1 소스코드로 빌드하여 설치하기 | 2016.05.27 | 928 |
5 | java quartz 시간 설정 참고사항 | 2015.12.16 | 822 |
4 | 마이바티스(MyBatis)쿼리로그 출력및 정렬하기 | 2015.12.01 | 1610 |
» | mybais #과 $의 차이점 | 2015.11.10 | 911 |
2 | Mybatis foreach 문법정리(상황에 따른 사용법) | 2015.11.10 | 1842 |
1 | jsoup 사용 예제 | 2014.06.06 | 1849 |