메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

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


spring-mybatis mybais #과 $의 차이점

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

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  등등의 에러가 뜨게 된다
번호 제목 날짜 조회 수
341 Elastic Search For Hadoop 2.2.0설치하기(5대 클러스터링) 2016.04.04 511
340 elasticsearch 기동시 permission denied on key 'vm.max_map_count' 오류발생시 조치사항 2017.06.23 511
339 우분투 16.04LTS에 Jupyter설치 2018.04.17 511
338 Windows7 64bit 환경에서 Apache Hadoop 2.7.1설치하기 2017.07.26 513
337 streaming작업시 입력된 값에 대한 사본을 만들게 되는데 이것이 실패했을때 발생하는 경고메세지 2017.04.03 514
336 fuseki에서 제공하는 script중 s-post를 사용하는 예문 2017.09.15 514
335 Soft memory limit exceeded (at 100.05% of capacity) 오류 조치 2022.01.17 515
334 서버중 slave,worker,regionserver만 재기동해야 할때 필요한 기동스크립트및 사용방법 2017.02.03 516
333 [HIVESERVER2]프로세스의 thread및 stack trace를 덤프하는 방법(pstack, jstack) 2022.05.11 517
332 우분투 서버에 GUI로 접속하기 file 2018.05.27 518
331 Caused by: java.lang.ClassNotFoundException: org.apache.spark.Logging 발생시 조치사항 2017.04.19 519
330 AIX 7.1에서 hive실행시 "hive: line 86: readlink: command not found" 오류가 발생시 임시 조치사항 2016.09.25 520
329 Error: E0501 : E0501: Could not perform authorization operation, User: hadoop is not allowed to impersonate hadoop 해결하는 방법 2015.06.07 521
328 hadoop 어플리케이션을 사용하는 사용자 변경시 바꿔줘야 하는 부분 2016.09.23 524
327 Could not configure server becase SASL configuration did not allow the Zookeeper server to authenticate itself properly: javax.security.auth.login.LoginException: Checksum failed 2019.05.18 525
326 python실행시 ValueError: zero length field name in format오류 해결방법 2016.05.27 526
325 new Gson().toJson(new ObjectId())을 사용하면 값이 다르게 나오는 경우가 있음 2016.12.23 529
324 halyard의 console스크립트에서 생성한 repository는 RDF4J Web Applications에서 공유가 되지 않는다. 2017.07.05 533
323 github에 있는 프로젝트와 로컬에서 작업한 프로젝트 합치기 2016.11.22 535
322 여러 홈페이지를 운영하거나 혹은 서버에 가입한 사용자들에게 홈페이지 계정을 나누어 줄수 있도록 설정/계정 생성방법 2018.01.23 536
위로