728x90
320x100
Mybatis를 사용하는 프로젝트 에서 mapper쿼리문에 파라미터 값 설정할 때
$,{} 또는 #{}을 사용하게 되는데, 이 둘의 차이점에 대한 내용.
${}
- 값이 넣어진 채로 쿼리문이 수행.
- 파라미터의 값이 바뀔 때마다 새로운 쿼리로 인식 하기 때문에 항상 쿼리문 파싱을 진행해야 함. (즉, 성능상의 단점이 존재)
- ‘’(작은 따옴표)가 붙지 않기 때문에 테이블 이름이나 컬럼이름을 동적으로 결정될 때 사용할 수 있음.
- SQL injection에 취약함.
#{}
- 파싱될 때 ?로 바뀌어짐.
- preparedstatement를 생성하기 때문에 ?에 파라미터가 바인딩 되어 수행됨.
- 이렇게 파싱된 쿼리문은 재활용(캐싱)되기 때문에 효율적임.
- 변수에 자동적으로 ‘’(작은따옴표가)가 붙기 때문에 ‘#{}’ 이런 형태로 하지 않아도 됨.
- 출처 및 참고 : https://mine-it-record.tistory.com/300
728x90
320x100
'💻 하나씩 차곡차곡 > Back-end' 카테고리의 다른 글
[자바/JAVA] xml / yaml / json 차이점 (0) | 2021.09.30 |
---|---|
[자바/JAVA] jre와 jdk의 차이점 (1) | 2021.09.28 |
[이클립스/Eclipse] 폰트 크기 조절 단축키 (0) | 2021.09.23 |
[톰캣 /이클립스] Strarting Tomcat v7.0 Server at localhost has encounterd a problem 해결하기 (0) | 2021.04.05 |
[자바/JAVA] 예외처리 관련 메서드인 printStackTrace() 이란? (0) | 2021.03.26 |