728x90
반응형

Mybatis #{}와 ${} 표기법

일반적으로 #{} 사용하여 값을 전달하고, ${} 사용하여 동적인 SQL 작성하는 것이 안전하고 권장되는 방법임

${} 경우 사용자 입력 값을 포함할 주의해야 하며, 반드시 값의 이스케이프와 SQL Injection 방어를 수동으로 처리해야 함

 


#{} 표기법

SELECT * FROM users WHERE id = #{userId}

#{} 안에는 자바 객체의 프로퍼티 이름이나 매개변수 이름 적음

#{} 안에 작성된 값은 자동으로 PreparedStatement 파라미터로 설정되며, 자동으로 값의 타입에 맞게 변환

#{} SQL Injection 공격을 방지하기 위해 내부적으로 값을 이스케이프(escape)하여 처리함

 


${} 표기법

 SELECT * FROM ${tableName}

${} 표기법은 SQL 쿼리에 사용되며, 문자열 치환을 수행하는데 사용

${} 안에는 직접 SQL 문을 작성하거나 자바의 변수나 상수를 사용할 있음

${} 안에 작성된 값은 단순히 문자열로 치환되기 때문에, 동적 SQL 작성하는 유용

반응형
복사했습니다!