iBatis中,關(guān)于$和#的區(qū)別分析

          $ 的作用實(shí)際上是字符串拼接,
          select * from $tableName$
          等效于
          StringBuffer sb = new StringBuffer(256);
          sb.append(“select * from “).append(tableName);
          sb.toString();

          #用于變量替換
          select * from table where id = #id#
          等效于
          prepareStement = stmt.createPrepareStement(“select * from table where id = ?”)
          prepareStement.setString(1,’abc’);

          ————————————————

          對(duì)于變量部分, 應(yīng)當(dāng)使用#, 這樣可以有效的防止sql注入, 未來(lái),# 都是用到了prepareStement,這樣對(duì)效率也有一定的提升

          $只是簡(jiǎn)單的字符拼接而已,對(duì)于非變量部分, 那只能使用$, 實(shí)際上, 在很多場(chǎng)合,$也是有很多實(shí)際意義的
          例如
          select * from $tableName$ 對(duì)于不同的表執(zhí)行統(tǒng)一的查詢
          update $tableName$ set status = #status# 每個(gè)實(shí)體一張表,改變不用實(shí)體的狀態(tài)
          特別提醒一下, $只是字符串拼接, 所以要特別小心sql注入問(wèn)題。
          總結(jié)如下:
          1.#是把傳入的數(shù)據(jù)當(dāng)作字符串,如#field#傳入的是id,則sql語(yǔ)句生成是這樣,order by "id",這當(dāng)然會(huì)報(bào)錯(cuò)..

          2.$傳入的數(shù)據(jù)直接生成在sql里,如#field#傳入的是id,則sql語(yǔ)句生成是這樣,order by id, 這就對(duì)了.

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

          4.$方式無(wú)法方式sql注入.

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

          6.一般能用#的就別用$.

          posted on 2011-02-24 10:46 小羅 閱讀(747) 評(píng)論(0)  編輯  收藏


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


          網(wǎng)站導(dǎo)航:
           
          <2011年2月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272812345
          6789101112

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          Web Framework

          常上的技術(shù)網(wǎng)站

          查找資料的java網(wǎng)站

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 绥宁县| 息烽县| 崇明县| 河北区| 会宁县| 沙坪坝区| 青阳县| 抚顺市| 新化县| 尉犁县| 临江市| 茂名市| 大足县| 尼玛县| 双城市| 淮阳县| 平原县| 永顺县| 青田县| 资溪县| 奈曼旗| 页游| 沧源| 邛崃市| 赣州市| 五寨县| 贞丰县| 双流县| 万安县| 寿阳县| 阜康市| 商城县| 峨山| 佛冈县| 盘山县| 祁阳县| 堆龙德庆县| 遂溪县| 织金县| 霸州市| 北宁市|