-
[자바/JAVA] mapper 쿼리문에 사용되는 ${}, #{} 의 차이점 (myBatis)💻 하나씩 차곡차곡/Back-end 2021. 9. 27. 09:00728x90320x100
Mybatis를 사용하는 프로젝트 에서 mapper쿼리문에 파라미터 값 설정할 때$,{} 또는 #{}을 사용하게 되는데, 이 둘의 차이점에 대한 내용.
${}- 값이 넣어진 채로 쿼리문이 수행.
- 파라미터의 값이 바뀔 때마다 새로운 쿼리로 인식 하기 때문에 항상 쿼리문 파싱을 진행해야 함. (즉, 성능상의 단점이 존재)
- ‘’(작은 따옴표)가 붙지 않기 때문에 테이블 이름이나 컬럼이름을 동적으로 결정될 때 사용할 수 있음.
- SQL injection에 취약함.
#{}- 파싱될 때 ?로 바뀌어짐.
- preparedstatement를 생성하기 때문에 ?에 파라미터가 바인딩 되어 수행됨.
- 이렇게 파싱된 쿼리문은 재활용(캐싱)되기 때문에 효율적임.
- 변수에 자동적으로 ‘’(작은따옴표가)가 붙기 때문에 ‘#{}’ 이런 형태로 하지 않아도 됨.
- 출처 및 참고 : https://mine-it-record.tistory.com/300
728x90320x100'💻 하나씩 차곡차곡 > 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