Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.
Mybatis foreach 문법
<foreach collection="param.place" item="place" open="(" close=")" separator="or">
sh.SNA_SHOW_KIND_IDX = ${place}
</foreach>
sh.SNA_SHOW_KIND_IDX = ${place}
</foreach>
collection = 전달받은 인자값
item = 전달받은 인자값을 다른이름으로 대체
open 해당 구문이 시작할떄 (
close 해당구문이 끝날떄
separator 한번 이상 반복할때 반복되는 사이에 해당 문을 넣어줌
note: "collection"파라미터 객체로 MyBatis 에 List 인스턴스나 배열을 전달 할 수 있다. 그렇게 하면 MyBatis는 Map으로 자동으로 감싸고 이름을 키로 사용한다. List 인스턴스는 'LIST' 를 키로 사용하고, 배열 인스턴스는 'array'를 키로 사용한다.
<select id="..." parameterType="..." resultType="Map">
select * from test
<where>
name in
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
#{item.value}
</foreach>
</where>
</select>
select * from test
<where>
name in
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
#{item.value}
</foreach>
</where>
</select>
mybatis user guide를 보면 foreach의 경우 list나 array 타입을 collection으로 설정할 수 있으며 이때 list나 array 데이터는 map으로 타입이 변환되어 저장된다고 함
list를 사용할 경우 (변수 이름은 list가 아니어도 됨)
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
<!-- collection 속성 값은 반드시 list나 array만 설정해야 함 -->
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
#{item.value}
</foreach>
<foreach collection="list" item="item" index="index" separator="," open="(" close=")">
#{item.value}
</foreach>
value 속성을 사용한 것으로 보아 Map.Entry.getValue 메서드를 호출하는 것이 아닐까 하는데...
array를 사용할 경우(변수 이름은 array가 아니어도 됨)
String[] array = new String[] { "a", "b", "c" };
<!-- collection 속성 값은 반드시 list나 array만 설정해야 함 -->
<foreach collection="array" item="item" index="index" separator="," open="(" close=")">
${array[index]}
</foreach>
<foreach collection="array" item="item" index="index" separator="," open="(" close=")">
${array[index]}
</foreach>
select의 parameterType이 map이나 java 오브젝트라면 collection 값에 속성 이름을 설정하면 됨
parameterType="Map"인경우
Map<String, Object> map = new HashMap<String, Object>();
map.put("friendList', list);
<select id="..." parameterType="Map" ...>
<foreach collection="friendList" .../>
</select>
<foreach collection="friendList" .../>
</select>
parameterType="{Java object}"인 경우
SomeJavaClass pojo = new SomeJavaClass();
pojo.setEnemyList(list);
<select id="..." parameterType="SomeJavaClass" ...>
<foreach collection="enemyList" .../>
</select>
<foreach collection="enemyList" .../>
</select>
댓글 0
| 번호 | 제목 | 날짜 | 조회 수 |
|---|---|---|---|
| 616 | 부팅을 외장하드에서 하도록 변경하는 방법 | 2015.07.28 | 3568 |
| 615 | pom.xml에서 build.gradle로 변환 | 2015.09.14 | 3357 |
| 614 | mongodb 2.6.6 설치(64bit) | 2015.09.30 | 2724 |
| 613 | SQL문장과 Mongo에서 사용하는 명령어를 비교한 것입니다. | 2015.09.30 | 4224 |
| 612 | root계정으로 MariaDB설치후 mysql -u root -p로 db에 접근하여 바로 해줘야 하는일..(케릭터셑은 utf8) | 2015.10.02 | 3904 |
| 611 | DB별 JDBC 드라이버 | 2015.10.02 | 4356 |
| » | Mybatis foreach 문법정리(상황에 따른 사용법) | 2015.11.10 | 5831 |
| 609 | mybais #과 $의 차이점 | 2015.11.10 | 3836 |
| 608 | Resource temporarily unavailable(자원이 일시적으로 사용 불가능함) 오류조치 | 2015.11.19 | 12099 |
| 607 | Runtime.getRuntime().exec(cmd) sample 소스 | 2015.11.19 | 2754 |
| 606 | sparql에서 concat에제 | 2015.11.27 | 3135 |
| 605 | 마이바티스(MyBatis)쿼리로그 출력및 정렬하기 | 2015.12.01 | 4467 |
| 604 | ontology, jena, sparql등 전반에 대한 설명및 예제를 제공하는 사이트 | 2015.12.08 | 2725 |
| 603 | protege 4.3 다운로드 | 2015.12.09 | 2633 |
| 602 | git설명 한글판 | 2015.12.09 | 2902 |
| 601 |
sparql 문법구조 설명
| 2015.12.09 | 3562 |
| 600 | 대표 오픈소스 라이선스, 한 눈에 보기! | 2015.12.10 | 3171 |
| 599 | 천문학적, 기후학적, 기상학적, 생물학적, 농사계절 구분 | 2015.12.16 | 4157 |
| 598 | java quartz 시간 설정 참고사항 | 2015.12.16 | 3875 |
| 597 | console명령과 API비교 | 2015.12.21 | 4836 |