#{}과 ${} 차이

배세훈·2021년 10월 26일
0

mybatis

목록 보기
1/2

#{}

  • 파라미터가 String 형태로 들어와 자동적으로 '파라미터' 형태가 된다.

ex)

<select id="getUser" parameter="String">
	SELECT USER_ID, USER_NUM
    	FROM USERS
        	WHERE USER_ID = #{userId}
</select>

다음 쿼리문에서 #{userId}의 값이 "홍길동"이라면 쿼리문에는
WHERE USER_ID = #{userId} 대신 WHERE USER_ID = "홍길동" 형태로 실행된다.

  • 쿼리 주입을 예방할 수 있어 보안측면에서 유리하다.

${}

  • 파라미터가 바로 출력된다.
    해당 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경된다.

  • 쿼리 주입을 예방할 수 없어 보안측면에서 불리하다.
    내부 데이터, 개인정보 등의 노출되면 안되는 데이터를 전달할 때는 사용하는 것을 지양한다.

  • 테이블이나 컬럼명, 예약어를 파라미터로 전달하고 싶을 때 사용한다.
    #{}는 자동으로 ''가 붙어 문자열이 된다.
    예를 들어 사용자 조회 시 user_id 정렬에 따라 조회를 하고 싶을 경우
    SELECT USER_ID FROM USERS ORDER BY USER_ID #{sortOrder} 라고 하면 sortOrder가 ''로 감싸지기 때문에 오류가 난다.

${sortOrder}로 적용해야 함

profile
성장형 인간

0개의 댓글