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

          導航

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

          統計

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          agile

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 平谷区| 临高县| 阳朔县| 渑池县| 怀宁县| 襄垣县| 合江县| 哈密市| 马关县| 外汇| 佛冈县| 普兰县| 疏附县| 承德市| 永嘉县| 兰西县| 呼图壁县| 陵水| 曲靖市| 华宁县| 平南县| 潜山县| 高雄市| 资兴市| 邮箱| 阆中市| 乌海市| 天峻县| 含山县| 宝清县| 普宁市| 寿阳县| 大新县| 昭苏县| 石门县| 金川县| 临洮县| 白山市| 大田县| 阳江市| 富民县|