ibatis中 $ 於 # 的 區別?


轉自:

http://www.blogjava.net/lsbwahaha/archive/2009/04/16/266026.html

 

 一個項目中在寫ibatis中的sql語句時,where user_id in (#user_id_list# ), 運行時總是不行,后來上網查了查,才知道這里不該用#,而應該用$,隨即查了下#與$的區別. 
總結如下: 
1.#是把傳入的數據當作字符串,如#user_id_list#傳入的是1,2,則sql語句生成是這樣,in ('1,2') ,當然不可以

2.$傳入的數據直接生成在sql里,如#user_id_list#傳入的是1,2,則sql語句生成是這樣,in(1,2) 這就對了. 

3.#方式能夠很大程度防止sql注入. 

4.$方式無法方式sql注入. 

5.$方式一般用於傳入數據庫對象.例如傳入表名. 

6.一般能用#的就別用$. 

直觀的說 
#str# 出來的效果是  'str' 
$str$ 出來的效果是  str 

另外  ##只能用在特定的幾個地方 $$可以用在任何地方  比如 order by $str$ 

你甚至可以直接寫  $str$  把 order by 這個字串放在str里傳進來 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM