隨筆-59  評(píng)論-31  文章-0  trackbacks-0

          1、#可以進(jìn)行預(yù)編譯,進(jìn)行類型匹配,#變量名#? 會(huì)轉(zhuǎn)化為 jdbc的?類型

          ?? $不進(jìn)行數(shù)據(jù)類型匹配,$變量名$就直接把$name$替換為 name的內(nèi)容

          ?? 例如:
          ????select * from tablename where id = #id#,假設(shè)id的值為12,其中如果數(shù)據(jù)庫(kù)字段id為字符型,那么#id#表示的就是'12',如果id為整型,那么#id#就是 12

          ??? 會(huì)轉(zhuǎn)化為jdbc的select * from tablename where id=?,把?參數(shù)設(shè)置為id的值

          ????select * from tablename where id = $id$,如果字段id為整型,Sql語(yǔ)句就不會(huì)出錯(cuò),但是如果字段id為字符型,
          ????那么Sql語(yǔ)句應(yīng)該寫(xiě)成 select * from table where id = '$id$'
          ????

          3、#方式能夠很大程度防止sql注入.
          4、$方式無(wú)法方式sql注入.
          5、$方式一般用于傳入數(shù)據(jù)庫(kù)對(duì)象.例如傳入表名.
          6、所以ibatis用#比$好,一般能用#的就別用$.

          另外,使用##可以指定參數(shù)對(duì)應(yīng)數(shù)據(jù)庫(kù)的類型

          如:

          select * from tablename where id =#id:number#?

          在做in,like 操作時(shí)候要特別注意

          mysql: select * from user where user_name like concat('%',#name#,'%')oracle: select * from user where user_name like '%'||#name#||'%'sql server: select * from user where user_name like '%'+#name#+'%'
          posted on 2011-11-17 22:15 RoyPayne 閱讀(618) 評(píng)論(0)  編輯  收藏 所屬分類: ibatis

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 岐山县| 宾阳县| 南开区| 萝北县| 布尔津县| 阳谷县| 平安县| 肇东市| 曲水县| 永胜县| 四川省| 竹山县| 东安县| 莒南县| 泗洪县| 大城县| 察雅县| 登封市| 博客| 安西县| 苍南县| 洛南县| 息烽县| 洪洞县| 花莲县| 固镇县| 格尔木市| 白城市| 育儿| 高安市| 达尔| 万荣县| 北票市| 岱山县| 长乐市| 清丰县| 合肥市| 秦皇岛市| 凉山| 永胜县| 泰和县|