메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

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>

 

번호 제목 글쓴이 날짜 조회 수
740 [CDP7.1.7] oozie sqoop action으로 import혹은 export수행시 발생한 오류에 대한 자세한 로그 확인 하는 방법 gooper 2024.04.19 0
739 [Impala] alter table구문수행시 "WARNINGS: Impala does not have READ_WRITE access to path 'hdfs://nameservice1/DATA/Temp/DB/source/table01_ccd'" 발생시 조치 gooper 2024.04.26 0
738 [CDP7.1.7, Replication]Encryption Zone내 HDFS파일을 비Encryption Zone으로 HDFS Replication시 User hdfs가 아닌 hadoop으로 수행하는 방법 gooper 2024.01.15 1
737 [CDP7.1.7]Hive Replication수행중 Specified catalog.database.table does not exist : hive.db명.table명 오류 발생시 조치방법 gooper 2024.04.05 1
736 [CDP7.1.7][Replication]Table does not match version in getMetastore(). Table view original text mismatch gooper 2024.01.02 2
735 ./gradlew :composeDown 및 ./gradlew :composeUp 를 성공했을때의 메세지 gooper 2023.02.20 6
734 호출 url현황 gooper 2023.02.21 6
733 [vue storefrontui]외부 API통합하기 참고 문서 총관리자 2022.02.09 7
732 [Cloudera Agent] Metadata-Plugin throttling_logger INFO (713 skipped) Unable to send data to nav server. Will try again. gooper 2022.05.16 7
731 [CDP7.1.7, Hive Replication]Hive Replication진행중 "The following columns have types incompatible with the existing columns in their respective positions " 오류 gooper 2023.12.27 7
730 [CDP7.1.7]Oozie job에서 ERROR: Kudu error(s) reported, first error: Timed out: Failed to write batch of 774 ops to tablet 8003f9a064bf4be5890a178439b2ba91가 발생하면서 쿼리가 실패하는 경우 gooper 2024.01.05 7
729 eclipse editor 설정방법 총관리자 2022.02.01 9
728 주문히스토리 조회 총관리자 2022.04.30 10
727 [bitbucket] 2022년 3월 2일 부터 git 작업시 기존에 사용하던 비빌번호를 사용할 수 없도록 변경되었다. 총관리자 2022.04.30 10
726 oozie의 sqoop action수행시 ooize:launcher의 applicationId를 이용하여 oozie:action의 applicationId및 관련 로그를 찾는 방법 gooper 2023.07.26 10
725 주문 생성 데이터 예시 총관리자 2022.04.30 11
724 [EncryptionZone]User:testuser not allowed to do "DECRYPT_EEK" on 'testkey' gooper 2023.06.29 11
723 [CDP7.1.7]Encryption Zone내부/외부 간 데이터 이동(mv,cp)및 CTAS, INSERT SQL시 오류(can't be moved into an encryption zone, can't be moved from an encryption zone) gooper 2023.11.14 11
722 [CDP7.1.7]impala-shell수행시 간헐적으로 "-k requires a valid kerberos ticket but no valid kerberos ticket found." 오류 gooper 2023.11.16 11
721 [Encryption Zone]Encryption Zone에 생성된 table을 select할때 HDFS /tmp/zone1에 대한 권한이 없는 경우 gooper 2023.06.29 12

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로