hrming
[DB/MyBatis] #{} 와 ${} 개념과 차이점 본문
MyBatis에서 입력 파라미터는 #{ } 로만 표시하는 줄 알았는데... ${ }도 있다는 걸 알았다..!

#{}
1. #{ } 사용시 PreparedStatement 생성
2. PreparedStatement 매개 변수 값 안전하게 설정
3. PreparedStatement 가 제공하는 set 계열의 메소드를 사용하여 물음표(?)를 대체할 값을 지정.
4. 들어오는 데이터를 문자열로 인식하기 때문에 자동 따옴표 붙음
→ 안전하고 빠름
→ 컴파일이 미리 되어있어 Statement 에 비해 성능상 이점
${}
1. ${ } 사용시 Statement 생성
2. Statement 매개변수 값 그대로 전달
3. 그대로 전달 하기 떄문에 문자열에 따옴표가 붙지 않는다.
예) select * from Extable where Statementparameter = 홍길동
4.테이블 컬럼 타입이 varchar여도 숫자 그대로 들어가기 떄문에
예) select * from Extable where Statementparameter(varchar 타입) = 1
→ ORDER BY 함수를 사용할 때 자동 따옴표가 붙으면 함수가 안먹기 때문에 ${ }를 써야한다.
출처: https://java119.tistory.com/39?category=824525
위 개념과 관련해서, PreparedStatement & Statement 개념은 하기 블로그 참고!
참고: https://webstone.tistory.com/56
Statement와 PreparedStatement의 차이점
일단 Statement와 PreparedStatement의 차이점을 알기 전에 prepared Statement가 무엇인지에 대해 알아보자. PreparedStatement란:데이터베이스 관리 시스템(DBMS)에서 동일하거나 비슷한 데이터베이스 문을 높은..
webstone.tistory.com
아래 블로그도 참고하기!
https://madplay.github.io/post/difference-between-dollar-sign-and-sharp-sign-in-mybatis
MyBatis에서 샾(#{})과 달러(${})의 차이는 무엇일까?
마이바티스(MyBatis)에서 XML 파일에 쿼리문을 작성할 때, 샾(#{}) 기호와 달러(${}) 기호의 차이점은 무엇일까?
madplay.github.io
'DB' 카테고리의 다른 글
[DB/SQL] Foreign Key (외래키) (2) | 2024.03.14 |
---|---|
[DB/SQL] INNER JOIN / OUTER JOIN / LEFT OUTER JOIN (0) | 2023.02.09 |
[DB/Hibernate] @TableGenerator (0) | 2022.11.16 |
[DB/SQL] CONVERT (0) | 2022.10.21 |
[DB/MyBatis] 관련 오류(예외)시 꼭! 확인해야 될 사항 (0) | 2022.05.19 |