ibatis中 $ 于 # 的 區(qū)別?

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

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

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

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

          5.$方式一般用于傳入數(shù)據(jù)庫對象.例如傳入表名. 

          6.一般能用#的就別用$. 
          直觀的說 
          #str# 出來的效果是  'str' 
          $str$ 出來的效果是  str 

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

          你甚至可以直接寫  $str$  把 order by 這個字串放在str里傳進(jìn)來 
          今天花了N久,才把這個問題搞出來,郁悶下,不過出來了也挺開心的,終于搞定啦,嘿嘿~!~   

          posted on 2009-04-16 20:13 胡鵬 閱讀(3027) 評論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          導(dǎo)航

          <2009年4月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          統(tǒng)計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 磴口县| 珲春市| 屯门区| 武汉市| 崇仁县| 逊克县| 石台县| 改则县| 称多县| 平利县| 兴义市| 洞头县| 通州市| 高尔夫| 玛纳斯县| 曲水县| 洪湖市| 博野县| 剑阁县| 建昌县| 安丘市| 宜兰县| 沙洋县| 海门市| 治县。| 杭锦后旗| 中方县| 渭南市| 哈密市| 抚宁县| 深泽县| 江山市| 都昌县| 会东县| 白朗县| 商丘市| 富民县| 昌邑市| 唐河县| 吉水县| 大宁县|