IT 소스/MyBatis
[MyBatis] 변수 #{} 와 ${} 의 차이점?
한량이야기
2024. 2. 1. 18:43
반응형
안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.

MyBatis에서의 substitution(대체) 공식은
동적 SQL을 작성할 때 사용되는 방법 중 하나로,
SQL 쿼리 내에서 변수나 매개변수를 대체하는데 활용됩니다.
MyBatis에서는 '#{}'와 '${}' 두 가지 대체 문법을 제공하고 있습니다.
1. #{ } 문법
일반적으로 사용자 입력과 같은 동적인 값에 대한 대체에 사용됩니다.
SELECT * FROM users WHERE id = #{userId}
-- 실행 결과
SELECT * FROM users WHERE id = 'codegood'
-- #{userId}는 파라미터로 전달된 userId 값을 대체된 'codegood'로 변환된다.
#{userId}는 'userId'에 전달된 매개변수의 값으로 대체합니다.
2. ${ } 문법
테이블 이름, 컬럼명 등 정적인 SQL 구문의 대체에 사용됩니다.
SELECT ${userId}, ${userName} FROM ${tableName}
-- 실행 결과
SELECT id, name FROM users
-- id, name, users가 문자열 그대로 대체 됩니다.
${tableName}, ${userId}, ${name}은 단순히 문자열로 대체되어 SQL이 생성됩니다.
${ }은 정적인 SQL 구문에만 사용하는 것이 권장되는 방법입니다.
반응형