Pages

2014년 2월 17일 월요일

[MyBatis] MyBatis 에서 #{value} 와 ${value} 차이

1.#{value} 
변수 이고 실제 쿼리에서 '(호따움표)가 붙습니다. 
PreparedStatement 에서 ? 에 들어갈 값입니다. 

ex) 
select * from board where id=#{id} 
이렇게 되어 있다면 
myBatis 내부적으론 
1
2
3
4
5
String sql = "select * from board where id = ?"
PreparedStatement  ps = ....
.
.
ps.setString(1,id)




2.${value} 
상수 이고 '(호따움표)가 붙지 않습니다. (sql 인젝션 위험이 있음) 
sql 문장을 만듭니다. 
동적 테이블,컬럼에도 사용됩니다. 
${myColumn} = #{value}이런식도 가능합니다. 

select * from board where id='${id}' 
이렇게 되어 있다면 
myBatis 내부적으론 

1
2
3
String sql = "select * from board where id = 'aaa'"//sql자체를 만듬
PreparedStatement ..
.


[출처:JAVA Project - Spring 강좌]

댓글 없음:

댓글 쓰기