[mybatis] forEach

2023. 2. 21. 14:00·A - 종료 및 관심 밖/sql

MyBatis foreach문 지원 태그

  • collection : 전달받은 인자. Map이나 배열객체와 더불어 List, Set등과 같은 반복가능한 객체를 전달할 수 있다
  • item : 전달받은 인자 값을 alias 명으로 대체
  • index : 반복되는 구문 번호이다. 0부터 순차적으로 증가
  • open : 구문이 시작될때 삽입할 문자열
  • close : 구문이 종료될때 삽입할 문자열
  • separator : 반복 되는 사이에 출력할 문자열
<select id="selectPostIn" resultType="domain.blog.Post">
  SELECT *
  FROM POST P
  WHERE ID in
      <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
            #{item}
      </foreach>
</select>

배열 param을 Map을 통해 넘겼을 경우

// DAO
public List<Members> getAuthUserList(String[] userArray) {
    HashMap<String, Object> map = new HashMap<String, Object>();
    map.put("userArray",userArray);
    return sqlSession.selectList("getAuthUserList", map);
}

// user_mapper.xml
<select id="getAuthUserList"  resultType="members">
    SELECT 
        m.*
        ,a.name 
    FROM members AS m 
        JOIN authority AS a 
            ON m.authority = a.authority
    WHERE m.authority IN
        <foreach collection="userArray" item="arr" open="(" close=")" separator=",">
            #{arr}
        </foreach>
    ORDER BY m.authority;
</select>

배열 param을 직접 넘길 경우

// DAO
public List<Members> getAuthUserList(String[] userArray) {
    return sqlSession.selectList("getAuthUserList", userArray);
}

// user_mapper.xml
<select id="getAuthUserList"  resultType="members">
    SELECT 
        m.*
        ,a.name 
    FROM members AS m 
        JOIN authority AS a 
			ON m.authority = a.authority
    WHERE m.authority IN
        -- 배열을 Mapds을 통해 넘길 때와는 다르게 collection의 값은 변수이름이 아닌 array를 입력해야한다
        <foreach collection="array" item="arr" open="(" close=")" separator=",">
                 #{arr}
        </foreach>
    ORDER BY m.authority;
</select>

레퍼런스

https://java119.tistory.com/85

https://devmoony.tistory.com/134

https://mybatis.org/mybatis-3/ko/dynamic-sql.html

저작자표시 비영리 변경금지 (새창열림)
'A - 종료 및 관심 밖/sql' 카테고리의 다른 글
  • 프로그래머스 스쿨 SQL 고득점KIT_SUM,MAX,MIN 답안지 (MYSQL)
  • 프로그래머스 스쿨 SQL 고득점KIT_SELECT 답안지 (MYSQL)
  • [mysql] 프로시저와 함수
  • [mybatis] sql, include
dev-moons
dev-moons
주니어 개발자의 개발지식 학습 내용부터 java, python 등 실무 중심으로 필요한 내용들을 정리하는 블로그입니다
  • dev-moons
    dev-moons의 개발 블로그 | 주니어 개발자의 프론트부터 백엔드까지
    dev-moons
  • 전체
    오늘
    어제
    • 분류 전체보기 (29) N
      • P - 기한이 있는 목표 (4) N
        • 개발지식 (4) N
      • A - 장기적인 목표 (0)
      • R - 일반적인 관심사 (1)
      • A - 종료 및 관심 밖 (25)
        • 독서 (1)
        • spring (11)
        • javascript (2)
        • sql (6)
        • db (1)
        • 자료구조론 (2)
        • springboot 게시판 만들기 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조론
    스프링입문
    SQL
    java
    SQL고득점KIT
    mysql
    디자인패턴
    스프링
    m1mac
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dev-moons
[mybatis] forEach
상단으로

티스토리툴바