메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


spring-mybatis mybais #과 $의 차이점

총관리자 2015.11.10 18:48 조회 수 : 1761

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  등등의 에러가 뜨게 된다
번호 제목 날짜 조회 수
» mybais #과 $의 차이점 2015.11.10 1761
147 Mybatis foreach 문법정리(상황에 따른 사용법) 2015.11.10 2660
146 DB별 JDBC 드라이버 2015.10.02 2048
145 root계정으로 MariaDB설치후 mysql -u root -p로 db에 접근하여 바로 해줘야 하는일..(케릭터셑은 utf8) 2015.10.02 2079
144 SQL문장과 Mongo에서 사용하는 명령어를 비교한 것입니다. 2015.09.30 1886
143 mongodb 2.6.6 설치(64bit) 2015.09.30 1242
142 pom.xml에서 build.gradle로 변환 2015.09.14 1523
141 부팅을 외장하드에서 하도록 변경하는 방법 2015.07.28 1695
140 바나나 파이의 /tmp폴더를 외장하드로 변경하기 2015.07.24 1467
139 Tracking URL = N/A 가발생하는 경우 - 환경설정값을 잘못설정하는 경우에 발생함 2015.06.17 2052
138 java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error: Unable to deserialize reduce input key from...오류해결방법 2015.06.16 3265
137 hortonworks에서 제공하는 메모리 설정값 계산기 사용법 file 2015.06.14 2240
136 Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.http.HttpConfig.getSchemePrefix()Ljava/lang/String; 해결->실패 2015.06.14 1243
135 hadoop 2.6.0에 sqoop2 (1.99.5) server및 client설치 == fail 2015.06.11 2773
134 "File /user/hadoop/share/lib does not exist" 오류 해결방법 2015.06.07 2222
133 Error: E0501 : E0501: Could not perform authorization operation, User: hadoop is not allowed to impersonate hadoop 해결하는 방법 2015.06.07 2188
132 Error: Could not find or load main class nodemnager 가 발생할때 해결하는 방법 2015.06.05 2386
131 센서테스트 file 2015.05.25 1144
130 apk 파일 위치 file 2015.05.25 2984
129 HAX is not working and emulator runs in emulation mode 메세지가 나오는 경우 file 2015.05.25 1002
위로