Bigdata, 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>
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>
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>
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>
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>
parameterType="{Java object}"인 경우
SomeJavaClass pojo = new SomeJavaClass();
pojo.setEnemyList(list);
<select id="..." parameterType="SomeJavaClass" ...> <foreach collection="enemyList" .../> </select>
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
13 | embedded-cassandra의 data 저장위치 | 총관리자 | 2019.06.09 | 336 |
12 | lombok설치방법 | 총관리자 | 2020.06.20 | 49 |
11 | python2.7.4에서 Oracle DB(11.2)를 사용하기 위한 설정(RPM을 이용하여 RHEL 7.4에 설치) | 총관리자 | 2021.11.26 | 335 |
10 | windows10 pro에서 microservice pattern책의 예제를 kubernetes에서 기동하는 방법 | 총관리자 | 2022.01.30 | 18 |
9 | eclipse editor 설정방법 | 총관리자 | 2022.02.01 | 10 |
8 | vuestorefrontui.io를 이용한 front end project 생성하기 | 총관리자 | 2022.02.06 | 23 |
7 | [vue storefrontui]외부 API통합하기 참고 문서 | 총관리자 | 2022.02.09 | 7 |
6 | restaurant-controller,에서 등록 예시 | 총관리자 | 2022.04.30 | 33 |
5 | 주문 생성 데이터 예시 | 총관리자 | 2022.04.30 | 11 |
4 | 주문히스토리 조회 | 총관리자 | 2022.04.30 | 11 |
3 | [ftgo_application]Unable to infer base url오류 발생시 조치방법 | gooper | 2023.02.20 | 1337 |
2 | ./gradlew :composeDown 및 ./gradlew :composeUp 를 성공했을때의 메세지 | gooper | 2023.02.20 | 6 |
1 | 호출 url현황 | gooper | 2023.02.21 | 6 |