ibatis中 $ 于 # 的 區別?

               一個項目中在寫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里傳進來 
          今天花了N久,才把這個問題搞出來,郁悶下,不過出來了也挺開心的,終于搞定啦,嘿嘿~!~   

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

          導航

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

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 股票| 梅河口市| 孟州市| 华池县| 万宁市| 原阳县| 西乌珠穆沁旗| 驻马店市| 察隅县| 墨玉县| 青河县| 辽源市| 鄂尔多斯市| 广饶县| 新安县| 桑植县| 通江县| 英山县| 镇平县| 随州市| 永顺县| 禹城市| 乾安县| 灵台县| 灵璧县| 南投县| 彭州市| 安图县| 建始县| 定州市| 公安县| 个旧市| 塔河县| 邓州市| 广安市| 特克斯县| 乌拉特后旗| 莱西市| 望谟县| 岳池县| 台中县|