IT/DB
mybatis $ # 차이
모띠
2022. 1. 24. 19:58
반응형
<select id="select list" parameterType="HashMap" resultType="HashMap">
select user_nm, user_id
from user
where user_id = #{user_id} and user_pwd = #{user_pwd}
</select>
$ (Statement)
SELECT ID FROM test WHERE num= ${num}
Oracle로 넘어온 쿼리 SELECT ID FROM test WHERE num = 77
실제 수행 쿼리 SELECT ID FROM test WHERE num = 77
num값이 달라지면 다른쿼리로 인식하기때문에 새로 파싱등의작업으로 속도 저하
'$'와 같은 경우 자주 바뀌지 않거나 사용자의 입력을 받는 경우가 아닐 때 사용하면 좋습니다.
예를 들어 컬럼명.
만약 사용자의 입력을 받는 경우 SQL Injection 보안 위험이 발생합니다
# (preparedStatement)
SELECT ID FROM test WHERE ID = #{ID}
Oracle로 넘어온 쿼리 SELECT ID FROM test WHERE ID = ?
실제 수행 쿼리 SELECT ID FROM test WHERE ID = 'admin'
오라클에서 변수를 바인드하여 id값이 달라져도 같은쿼리로 인식
'#'과 같은 경우는 사용자의 입력을 받는 경우 또는 데이터가 많은 경우 사용합니다.
반응형