728x90
반응형
Mybatis #{}와 ${} 표기법
일반적으로 #{}을 사용하여 값을 전달하고, ${}을 사용하여 동적인 SQL을 작성하는 것이 안전하고 권장되는 방법임
${}의 경우 사용자 입력 값을 포함할 때 주의해야 하며, 반드시 값의 이스케이프와 SQL Injection 방어를 수동으로 처리해야 함
#{} 표기법
SELECT * FROM users WHERE id = #{userId}
#{} 안에는 자바 객체의 프로퍼티 이름이나 매개변수 이름 적음
#{} 안에 작성된 값은 자동으로 PreparedStatement의 파라미터로 설정되며, 자동으로 값의 타입에 맞게 변환
#{}은 SQL Injection 공격을 방지하기 위해 내부적으로 값을 이스케이프(escape)하여 처리함
${} 표기법
SELECT * FROM ${tableName}
${} 표기법은 SQL 쿼리에 사용되며, 문자열 치환을 수행하는데 사용
${} 안에는 직접 SQL 문을 작성하거나 자바의 변수나 상수를 사용할 수 있음
${} 안에 작성된 값은 단순히 문자열로 치환되기 때문에, 동적 SQL을 작성하는 데 유용
반응형
'프로그래밍 > Mybatis' 카테고리의 다른 글
[MyBatis] There is no getter for property named ‘xxx’ in 에러 (0) | 2023.07.26 |
---|---|
[MyBatis] Cause: java.sql.SQLDataException: Cannot determine value type from string 해결 (0) | 2023.06.02 |
[Mybatis] 자동 생성 키 SelectKey (0) | 2022.04.05 |
[Mybatis] Cause: java.lang.NumberFormatException: For input string: "Y" 에러 해결 방법 (0) | 2022.03.17 |
[Mybatis] <choose>, <when>, <otherwise> 사용법 (0) | 2022.03.11 |