程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談mybatis中的#和$的差別

淺談mybatis中的#和$的差別

編輯:關於JAVA

淺談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中的#和$的差別全體內容了,願望年夜家多多支撐~

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved