[Spring] #{}, ${} 차이점

BBANG-JUN·2021년 1월 6일
1

🍃Spring

목록 보기
25/26
post-thumbnail

#{}, ${} 차이점


MyBatis를 진행하다 #{}, ${} 의 차이점에 대해 명확히 짚고 넘겨야 할 것 같아 피드를 작성하게 되었습니다.

table

seq가 int형인 경우?

SELECT *
FROM table
WHERE seq = #{seq}::int // postgreSQL 
SELECT *
FROM table
WHERE seq = ${seq}

👍 #{}

  • 파라미터가 String 형태로 들어와 자동적으로 '파라미터' 형태가 된다.
    ex) #{user_id}의 user_id의 값이 abc라면 쿼리문에는 USER_ID = 'abc'의 형태가 된다.
  • 쿼리 주입을 예방할 수 있어 보안측면에서 유리하다.

✌ ${}

  • 파라미터가 바로 출력된다.
  • 해당 칼럼의 자료형에 맞추어 파라미터의 자료형이 변경된다.
  • 쿼리 주입을 예방할 수 없어 보안측면에서 불리하다.
    그러므로, 사용자의 입력을 전달할때는 사용하지 않는 편이 낫다.
  • 테이블이나 칼럼명을 파라미터로 전달하고 싶을 때 사용한다.
    #{}은 자동으로 ''가 붙어서 이 경우에는 사용할 수 없다.
profile
🔥 머릿속으로 생각하지만 말고, 행동으로 보여줘

0개의 댓글