티스토리 뷰

일반적으로 쓸일이 없긴 한데, 이번에 어쩌다보니 쓰게되었다.


구조는 List를 Map에 넣고, 해당 Map을 List에 넣는다.



List<String> list = new ArrayList<String>();


list.add("A");

list.add("B");

list.add("C");


Map<String, Object> map = new HashMap<String, Object>(); 


map.put("list", list);


List<HashMap<String, Object>> allList = new ArrayList<HashMap<String, Object>>();


allList.add(map);

allList.add(map);

...


과 같은 형태로 파라미터를 설정하게 될 경우가 있다.(최근 생겼다.)


그런데 이 allList를 파라미터로 던질 경우, iterate의 property 속성에 명칭이 없어서 인식이 안되는 듯 하다.

고로, allList를 Map에 넣어주면 가독성 있게 인식한다.


Map<String, Object> param = new HashMap<String, Object>();


param.put("allList");


최종적으로 보자면,


Map > List > Map > List

param > allList > map > list



iterate 구문은 다음과 같다.


<select id="testSelectIterate" parameterClass="HashMap" resultClass="HashMap">

<iterate property="allList" conjunction="UNION ALL">

SELECT

<iterate property="allList[].list" conjunction=",">

#allList[].list[]# AS $allList[].list[]$

</iterate>

FROM DUAL

</iterate>

</select>


결과적으로 SQL문은,


SELECT

'A' AS A

, 'B' AS B

, 'C' AS C

FROM DUAL

UNION ALL SELECT

'A' AS A

, 'B' AS B

, 'C' AS C

FROM DUAL


처럼 나온다.



'Programming > JAVA' 카테고리의 다른 글

Oracle용 insert batch 샘플  (2) 2017.07.05
iBatis ParameterClass가 String일 경우 isNotEmpty  (1) 2016.10.24
JsonView와 pageJsonReport의 차이점  (0) 2013.11.27
Spring Framework 개념  (0) 2012.12.20
문자열 비교, 정렬하기.  (0) 2012.12.14
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함