#{}是預編譯處理,像傳進來的資料會加個" "(#將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號)
${}就是字串替換。直接替換掉佔位符。$方式一般用於傳入資料庫物件,例如傳入表名.
使用 ${} 的話會導致 sql 注入。什麼是 sql 注入呢?比如 select * from user where id = $
value 應該是乙個數值吧。然後如果對方傳過來的是 001 and name = tom。這樣不就相當於多加了乙個條件嘛?把sql語句直接寫進來了。如果是攻擊性的語句呢?001;drop table user,直接把表給刪了
所以為了防止 sql 注入,能用 #{} 的不要去用 ${}
如果非要用 ${} 的話,那要注意防止 sql 注入問題,可以手動判定傳入的變數,進行過濾,一般 sql 注入會輸入很長的一條 sql 語句
myBatis中 和 區別
1.將傳入的資料都當成乙個字串,會對自動傳入的資料加乙個雙引號。如 order by user id 如果傳入的值是111,那麼解析成sql時的值為order by 111 如果傳入的值是id,則解析成的sql為order by id 2.將傳入的資料直接顯示生成在sql中。如 order by u...
mybatis 中 和 區別
在使用mybatis 框架時 在xml的配置檔案中,通常是使用 來獲取數值的 如 select from t user inf where id 這時 如果你傳入的值為zhangsan 則會編譯成為 select from t user inf where id zhangsan mybatis 會...
Mybatis 中 和 區別
號與 區別 號表示引數,代表乙個字串。如 select a,b,c from table1 where id value 傳入引數後如 value 1 則可生成 select a,b,c from table1 where id 1 select a,b,c from table1 where ci...