動的SQLは、あまり書かないというスタンスは正しいのだろうか?
iBATIS 動的SQL イテレータ
リスト展開結果でSQL成立するようにする方法
SqlMapClient に渡すパラメータオブジェクトに、java.util.Collection実装属性を用意する
これを iterate タグで展開する。
-------SqlMap 記述 ---------
WHERE ITEM
<iterate prepend=" IN"
open="(" close=")" property="itemList"
conjunction=",">
#itemList#
</iterate>
----------------------------
property : パラメータオブジェクトの展開される属性
prepend : 展開結果の前に記述するSQL
open : 展開開始の前に付与されるもの
close : 展開終了の後に付与されるもの
conjunction : 展開要素を接続する記述
iterateタグBODY で、#property# と書く。
=======
SqlMapClient に渡すパラメータ例:
import java.util.ArrayList;
import java.util.List;
public class Param{
private List<String> itemList;
public Param(){
this.locationList = new ArrayList<String>();
}
public List<String> getItemList(){
return this.itemList;
}
public void setItemList(List<String> itemList){
this.itemList = itemList;
}
public void addItem(String item){
this.itemList.add(item);
}
}