(Spring) mybatis foreach 사용 예(java 코드 포함)

1. mybatis와 foreach

  • MyBatis는 관계형 데이터베이스와 상호 작용하는 편리한 방법을 제공하는 Java 기반 지속성 프레임워크입니다.
  • MyBatis의 요소 foreach는 목록이나 배열과 같은 컬렉션을 반복하고 컬렉션의 요소를 기반으로 동적 SQL 문을 생성하는 데 사용됩니다.


(Spring) mybatis foreach 사용 예(java 코드 포함) 1
내 신발

2. foreach 속성

  • item: 컬렉션의 현재 항목을 나타내는 변수의 이름입니다.
  • 인덱스: 컬렉션에 있는 항목의 현재 인덱스를 나타내는 변수의 이름입니다.
  • collection: 반복할 컬렉션의 이름입니다.
  • open: 컬렉션의 첫 번째 항목 앞에 추가할 문자열입니다.
  • 닫기: 컬렉션의 마지막 항목 뒤에 추가할 문자열입니다.
  • 구분 기호: 컬렉션의 각 항목 사이에 추가할 문자열입니다.
//기본형식
<select id="selectUsers" parameterType="java.util.List" resultType="User">
  SELECT * FROM users WHERE id IN
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
    #{item}
  </foreach>
</select>

3. 스프링 + 마이바티스 예제

//VO파일
public class ComSearchVO {
    
    /* List형파라메터 */
    private List<String> searchList = new ArrayList<String>();
 
    public List<String> getSearchList() {
        return searchList;
    }

    public void setSearchList(List<String> searchList) {
        this.searchList = searchList;
    }
}


//service 또는 controller
public Object selectCommonAlarmCodeList() throws Exception {
	
    ...
    
    List<String> paramList = new ArrayList<String>();

    paramList.add("A");
    paramList.add("B");
    paramList.add("C");

    ComSearchVO searchVO = new ComSearchVO();
    searchVO.setSearchList(paramList);
    
    list = dao.selectUserList(searchVO);
    
    ...
}


//mybatis xml
<select id="selectUserList" parameterType="ComSearchVO" resultMap="userList">
    SELECT * 
	  FROM tb_users u
     WHERE 1=1
	   AND u.user_code IN		 
       <foreach collection="searchList" item="item" open="(" close=")" separator=",">
           <!(CDATA( #{item} ))>
       </foreach>
</select>