본문 바로가기
Database

MyBatis 반복문(foreach) + String[] 배열(array) / iBatis 반복문(iterate) + 동적 쿼리(dynamic)

by 보리하늘 2017. 12. 28.
728x90
반응형

myBatis 와 iBatis 의 반복문은 크게 다르진 않다.


**

open="("      : 반복시 '('로 시작

close=")"     : 반복시 ')'로 끝남

prepend       : 'WHERE' 과 같이 iterate 문 앞에 첨가




*** myBatis


1
2
3
4
5
6
7
<delete id="Delete" parameterType="map">
    DELETE FROM ${TABLENAME}
    WHERE
    <foreach collection="ID" item="item" separator="or" index="index">
        ID = #{item}
    </foreach>
</delete>
cs


collection : 전달받은 인자값 이름(변수 이)


item : foreach 문 안에서 사용할 매개변수 이


separator : foreach 문이 한번 돌고 다음번 돌때의 구분자




* 배열을 파라미터로 받을때

collection 에 꼭! array 로!!


1
2
3
4
5
6
7
8
9
10
String[] 배열이름;
 
<select id="selectList" parameterType="java.util.ArrayList" resultType="test.vo">
    SELECT * FROM TEST
    WHERE ID_SEQ IN (
        <foreach collection="array" item="item" index="index" separator=",">
            ${item}
        </foreach>
    )
</select>
cs











*** iBatis


1
2
3
4
5
6
7
8
9
10
<insert id="Insert" parameterClass="MenuCreatVO">
    INSERT ALL
    <dynamic>
        <iterate property="functionList">
            INTO USV_MENU_AUTHOR ( AUTHOR_CODE ,MENU_NO ) 
            VALUES (#authorCode#, #functionList[]#)
        </iterate>
    </dynamic>
    SELECT * FROM dual
</insert>
cs


property : 전달받은 인자값 이름(변수 이름)

conjunction : foreach 문이 한번 돌고 다음번 돌때의 구분자

728x90
반응형

댓글