파라미터
-
#{}과 ${}, 왜 다를까?Web Programming/Mybatis 2020. 11. 5. 10:58
Mybatis에서 쿼리문을 작성할 때 다음과 같이 $를 사용하거나 #을 사용하여 파라미터를 받아온다. 언뜻 보면 큰 차이는 없어보이나 이 차이로 인해 파라미터를 받아오지 못하는 경우가 생긴다. 두 쿼리문을 정리하면 다음과 같다. #{} 파라미터가 String 형태로 넘어온 후 그 값에 ' '이 붙어 출력된다. SQL Injection이 들어올 경우 ' '으로 인해 쿼리문으로 인식하지 않아 보안에 유리하다. ${} 파라미터가 해당 컬럼의 자료형에 맞춰진 형태로 출력된다. SQL Injection이 들어올 경우 쿼리문으로 인식하여 보안에 불리하다. ' '을 붙이면 인식되지 않는 테이블이나 컬럼명을 전달하기 위해 사용한다. 코드를 보며 차이를 확인해보자. 위와 같이 파라미터 값이 String 형태로 필요한 경..