Posted on 2008-01-02 20:48
云自無心水自閑 閱讀(8582)
評論(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)