淺談mybatis中的#和$的差別。本站提示廣大學習愛好者:(淺談mybatis中的#和$的差別)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談mybatis中的#和$的差別正文
1. #將傳入的數據都當做一個字符串,會對主動傳入的數據加一個雙引號。如:order by #user_id#,假如傳入的值是111,那末解析成sql時的值為order by "111", 假如傳入的值是id,則解析成的sql為order by "id".
2. $將傳入的數據直接顯示生成在sql中。如:order by $user_id$,假如傳入的值是111,那末解析成sql時的值為order by user_id, 假如傳入的值是id,則解析成的sql為order by id.
3. #方法可以或許很年夜水平避免sql注入。
4.$方法沒法避免Sql注入。
5.$方法普通用於傳入數據庫對象,例如傳入表名.
6.普通能用#的就別用$.
MyBatis排序時應用order by 靜態參數時須要留意,用$而不是#
字符串調換
默許情形下,應用#{}格局的語法會招致MyBatis創立預處置語句屬性並以它為配景設置平安的值(好比?)。如許做很平安,很敏捷也是首選做法,有時你只是想直接在SQL語句中拔出一個不轉變的字符串。好比,像ORDER BY,你可以如許來應用: ORDER BY ${columnName}
這裡MyBatis不會修正或本義字符串。
主要:接收從用戶輸入的內容並供給給語句中不變的字符串,如許做是不平安的。這會招致潛伏的SQL注入進擊,是以你不該該許可用戶輸出這些字段,或許平日自行本義並檢討。
以上就是小編為年夜家帶來的淺談mybatis中的#和$的差別全體內容了,願望年夜家多多支撐~