본문 바로가기
IT/DB

mybatis $ # 차이

by 모띠 2022. 1. 24.
<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값이 달라져도 같은쿼리로 인식

'#'과 같은 경우는 사용자의 입력을 받는 경우 또는 데이터가 많은 경우 사용합니다.

'IT > DB' 카테고리의 다른 글

오라클 계정내 모든 테이블 삭제하기  (0) 2024.07.15
ORACLE 정리  (0) 2023.03.27
mysql 정리  (0) 2023.03.27
mysql 도커 실행  (0) 2022.01.24
DB 튜닝을 알아보자  (0) 2022.01.24

댓글