區別1:
#{} 相當於JDBC SQL語句中的佔位符 “?”(PreparedStatement)
${} 相當於JDBC SQL語句中的連接符號 “+” (Statement)
所以,${} 存在SQL注入問題
區別2:
#{} 進行輸入映射的時候,會對參數進行類型解析(如果是String類型,會自動加上引號)
${} 進行輸入映射的時候,將參數原樣輸出到SQL語句中
所以在like條件查詢中要小心
例如:
當查詢條件中的name=”崑山花臂男”時
使用#{}
select * from user where username like '%#{name}%'
會得到如下的sql:
select * from user where username like '%'崑山花臂男'%'
這個sql會執行報錯。
而使用${}時
select * from user where username like '%${name}%'
會得到如下的sql:
select * from user where username like '%崑山花臂男%'
該sql可以正常執行。
區別3:
#{} 如果進行簡單類型(String,Date、8種基本類型的包裝類)的輸入映射時,#{}中參數名稱可以任意
#{} 如果進行簡單類型(String,Date、8種基本類型的包裝類)的輸入映射時,${}中參數名稱必須是value