#{} 和${}都是在sql語句當中使用html
區別在於sql
1.sql解析語句的時候會在#{}傳入的數據加引號,而不會在${}加引號(顯示的是原來的sql)數據庫
即:spa
#{} select * from table1 where id=#{id} -->select * from table1 where id='2' .net
${} select * from table1 where id=${id} -->select * from table1 where id=2htm
2.也正是如此, #{}可以很大程度防止sql注入,而${}是元語句輸出對象
3.$方式通常用於傳入數據庫對象,例如傳入表名.通常能用#的就別用$blog
MyBatis排序時使用order by 動態參數時須要注意,用$而不是#排序
如:get
select * from ${tableName} order by ${id} 這裏須要傳入表名和按照哪一個列進行排序
加入傳入table一、id 則語句爲:select * from table1 order by id
若是是使用#{} 則變成了select * from 'table1' order by 'id' 咱們知道這樣就不對了。
參考借鑑: