메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

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>
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>

 

번호 제목 날짜 조회 수
641 로그 파일에 대해 Elasticsearch 사용하기 2014.09.25 1279
640 RHadoop을 통해서 웹사이트의 방문자수를 예측하는 방법 2014.09.26 2075
639 solr에서 한글사용시 주의점 2014.09.26 731
638 solr설치및 적용관련 file 2014.09.27 2205
637 solr vs elasticsearch 비교2 2014.09.29 1431
636 [번역] solr 검색 엔진 튜토리얼 2014.10.07 596
635 Using The ZooKeeper CLI에서 zkCli의 위치 2014.11.02 1057
634 kafka의 re-balance를 이용하여 consumer를 multi thread로 돌려서 topic의 partitions을 활용 2015.03.31 404
633 SASL configuration failed: javax.security.auth.login.LoginException: java.lang.NullPointerException 오류 해결방법 2015.04.02 802
632 scan의 startrow, stoprow지정하는 방법 2015.04.08 558
631 bananapi 5대(ubuntu계열 리눅스)에 yarn(hadoop 2.6.0)설치하기-ResourceManager HA/HDFS HA포함, JobHistory포함 2015.04.24 19290
630 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable원인 2015.04.27 539
629 zookeeper 3.4.6 설치(3대) 2015.04.28 1296
628 Hadoop - 클러스터 세팅및 기동 2015.04.28 509
627 HBase 0.98.12(1.2.5) for hadoop2 설치-5대에 완전분산모드 (HDFS HA상테) 2015.04.29 1241
626 hive 0.13.1 설치 + meta정보는 postgresql 9.3에 저장 2015.04.30 604
625 oozie 4.1 설치 - maven을 이용한 source compile on hadoop 2.5.2 with postgresql 9.3 2015.04.30 1231
624 hadoop 2.6.0 기동(에코시스템 포함)및 wordcount 어플리케이션을 이용한 테스트 2015.05.05 3845
623 java.lang.IllegalArgumentException: Does not contain a valid host:port authority: master 오류해결방법 2015.05.06 502
622 znode /hbase recursive하게 지우기 2015.05.06 739
위로