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 구문에만 사용하는 것이 권장되는 방법입니다.

반응형