mybatis # $ 차이
쿼리 중 desc 를 파라미터로 받을 생각으로 mapper 를 #{sord}수정하고 테스트를 돌렸더니 에러가 발생해서 찾아봤습니다.
#{}
여기서 말하는 # 은 preparedStatement 입니다 파라미터가 String 으로 들어와 자동적으로 파라미터 형태가 됩니다 쿼리주입 예방으로 보안 측면에서 유리합니다.
${}
여기서 말하는 $ 은 Statement 입니다. 파라미터가 바로 출력되고 해당 칼럼의 자료형에 맞춰 파라미터 자료형이 변경됩니다. 쿼리주입 예방이 안되서 보안 측면으로는 약합니다. 테이블이나 칼럼명을 파라미터로 넘기고 싶을 때 사용합니다.