JAVA
Map subMap = new HashMap();
List list = new ArrayList();
List<Map<String, Object>> param = (List<Map<String, Object>>) params.get("param2");
params = (Map) params.get("param");
for(int i = 0; i<param.size(); i++){
subMap.put("KEY1", param.get(i).get("key1"));
subMap.put("KEY2", param.get(i).get("key2"));
subMap.put("KEY3", param.get(i).get("key3"));
subMap.put("KEY4", param.get(i).get("key4"));
list.add(subMap);
}
params.put("iList", list);
SQL
AND (A.KEY_1, A.KEY_2, A.KEY_3, A.KEY_4)
<iterate prepend="IN" property="iList" open="(" close=")" conjunction=", ">
(#iList[].KEY1#, #iList[].KEY2#, #iList[].KEY3#, #iList[].KEY4#)
</iterate>
ibatis iterate를 이용한 list인 parameter로 IN 검색조건을 정리해봤다.
UPDATE B_TABLE
SET TARGET_COLOUMN = ''
WHERE (B_KEY1, B_KEY2, B_KEY3, B_KEY4) IN (
SELECT B.B_KEY1, B.B_KEY2 , B.B_KEY3, B.B_KEY4
FROM A_TABLE A, B_TABLE B
WHERE 1=1
AND A.A_KEY1 = B.B_KEY1
AND A.A_KEY2 = '11'
AND A.A_KEY3 = '2024'
AND B.TARGET_COLOUMN IN ('TEST0008', 'TEST0002')
)
이런식으로 UPDATE문도 활용가능하다.