云自無心水自閑

          天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
          posts - 288, comments - 524, trackbacks - 0, articles - 6
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          iBatis動態Sql解決In子句的替代方法

          Posted on 2008-01-02 20:48 云自無心水自閑 閱讀(8585) 評論(3)  編輯  收藏 所屬分類: Java 、心得體會

          在iBatis中,對于in子句的標準做法是采用動態sql來解決的。具體方法大致是:Java代碼傳入一個List或者數組,然后在sqlMapConfig映射中使用iterate循環取這個變量,動態地生成sql語句。
          這個標準解法的缺點是,使用起來比較麻煩
          1. 需要在sqlMapConfig中使用動態語句
          2. 需要傳入一個Iterable的變量
          對于這個問題,我使用了一個偷懶的辦法,就是使用$標記。
          在iBatis中,普通的變量,比如:v,是使用#號,在這個例子中,就是:#v#。
          這樣,iBatis會使用prepareStatement,并對變量進行變量綁定。
          而$符號是簡單替代的用法,在數據庫的執行效率上要比前一種差。但優點就是簡單方便。
          比如:
          SELECT * FROM  emp WHERE emp_no in ($empString$);
          而empString的值就是1, 2, 3. 在Log中,可以看到,Sql語句就是:SELECT * FROM emp WHERE emp_no in (1,2,3)


          評論

          # re: iBatis動態Sql解決In子句的替代方法  回復  更多評論   

          2008-04-08 01:45 by jarit
          用$等于連接SQL,不好,還要解決敏感字符問題

          # re: iBatis動態Sql解決In子句的替代方法  回復  更多評論   

          2009-12-17 21:49 by 團派家園
          3.0比2.0更好了。

          # re: iBatis動態Sql解決In子句的替代方法  回復  更多評論   

          2010-11-10 16:25 by 陳于喆
          小心sql注入
          主站蜘蛛池模板: 油尖旺区| 铜川市| 南丰县| 吉水县| 潮安县| 济阳县| 外汇| 昭平县| 枣阳市| 丹凤县| 房山区| 漳浦县| 县级市| 山西省| 寿光市| 耒阳市| 西藏| 固阳县| 兰西县| 泰州市| 盘山县| 张家口市| 祁门县| 江都市| 于田县| 灵台县| 隆昌县| 海丰县| 繁昌县| 虎林市| 屏边| 榕江县| 吉安市| 灵丘县| 万载县| 平远县| 宝鸡市| 乐亭县| 海宁市| 五指山市| 日喀则市|