티스토리 뷰
일반적으로 쓸일이 없긴 한데, 이번에 어쩌다보니 쓰게되었다.
구조는 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 |