1.?#將傳入的數(shù)據(jù)都當(dāng)成一個(gè)字符串,會(huì)對(duì)自動(dòng)傳入的數(shù)據(jù)加一個(gè)雙引號(hào)。如:order by #user_id#,如果傳入的值是111,那么解析成sql時(shí)的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".
2.?$將傳入的數(shù)據(jù)直接顯示生成在sql中。如:order by $user_id$,如果傳入的值是111,那么解析成sql時(shí)的值為order by user_id, 如果傳入的值是id,則解析成的sql為order by id.
3.?#方式能夠很大程度防止sql注入?! ?/p>
4.$方式無(wú)法防止Sql注入。
5.$方式一般用于傳入數(shù)據(jù)庫(kù)對(duì)象,例如傳入表名.
6.一般能用#的就別用$.
MyBatis排序時(shí)使用order by 動(dòng)態(tài)參數(shù)時(shí)需要注意,用$而不是#
字符串替換
默認(rèn)情況下,使用#{}格式的語(yǔ)法會(huì)導(dǎo)致MyBatis創(chuàng)建預(yù)處理語(yǔ)句屬性并以它為背景設(shè)置安全的值(比如?)。這樣做很安全,很迅速也是首選做法,有時(shí)你只是想直接在SQL語(yǔ)句中插入一個(gè)不改變的字符串。比如,像ORDER BY,你可以這樣來(lái)使用: ORDER BY ${columnName}
這里MyBatis不會(huì)修改或轉(zhuǎn)義字符串。
重要:接受從用戶(hù)輸出的內(nèi)容并提供給語(yǔ)句中不變的字符串,這樣做是不安全的。這會(huì)導(dǎo)致潛在的SQL注入攻擊,因此你不應(yīng)該允許用戶(hù)輸入這些字段,或者通常自行轉(zhuǎn)義并檢查。
以上就是小編為大家?guī)?lái)的淺談mybatis中的#和$的區(qū)別全部?jī)?nèi)容了,希望大家多多支持PHP中文網(wǎng)~
更多淺談mybatis中的#和$的區(qū)別相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!
每個(gè)人都需要一臺(tái)速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊(cè)表數(shù)據(jù)和不必要的后臺(tái)進(jìn)程會(huì)占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://www.miracleart.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)