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 胡鵬 閱讀(3026) 評論(0)  編輯  收藏 所屬分類: 數據庫

          導航

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

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 荃湾区| 台东市| 仁怀市| 鹤壁市| 金昌市| 故城县| 滦平县| 沁水县| 磴口县| 定结县| 剑阁县| 永丰县| 黄梅县| 郎溪县| 维西| 政和县| 通化市| 开江县| 梨树县| 井冈山市| 陵川县| 盱眙县| 三穗县| 阿瓦提县| 西昌市| 肃北| 巴彦淖尔市| 禹州市| 广东省| 白河县| 洛扎县| 那坡县| 沙坪坝区| 通山县| 慈利县| 双城市| 南涧| 苍山县| 陵川县| 益阳市| 密山市|