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}로 적용해야 함