본문 바로가기

IT

[MySQL] MyBatis foreach 작성 방법 List

반응형

MyBatis에서 foreach 작성 방법

소개

MyBatis는 자바 언어용으로 개발된 오픈 소스 퍼시스턴스 프레임워크로, SQL 매핑을 통해 데이터베이스와의 상호 작용을 단순화합니다. foreach는 MyBatis에서 반복 작업을 수행하는데 사용되는 중요한 요소 중 하나입니다. 이 기능을 효과적으로 사용하면 데이터베이스 쿼리 작성과 관리가 훨씬 간편해집니다.

foreach 기본 구문

foreach는 주로 SQL 문의 IN 연산자와 함께 사용되어 여러 값을 동적으로 생성합니다. 아래는 기본적인 foreach의 구문입니다.

<select id="selectWithForeach" parameterType="java.util.List" resultType="...">
  SELECT * FROM your_table
  WHERE your_column IN
  <foreach collection="list" item="item" open="(" separator="," close=")">
    #{item}
  </foreach>
</select>

이 구문에서 collection은 반복할 자바 컬렉션을 지정하고, item은 컬렉션의 각 요소를 참조하는 변수입니다. open, separator, close는 각각 열린 괄호, 요소 사이의 구분자, 닫힌 괄호를 지정합니다.

예제

간단한 예제를 통해 foreach를 사용하는 방법을 자세히 살펴보겠습니다.

1. 파라미터 준비

List<Integer> idList = Arrays.asList(1, 2, 3, 4, 5);

2. MyBatis XML 구성

<select id="selectByIdList" parameterType="java.util.List" resultType="...">
  SELECT * FROM your_table
  WHERE id IN
  <foreach collection="list" item="item" open="(" separator="," close=")">
    #{item}
  </foreach>
</select>

3. Mapper 인터페이스

public interface YourMapper {
    List<YourEntity> selectByIdList(List<Integer> idList);
}

4. 서비스 레이어에서 사용

List<YourEntity> result = yourMapper.selectByIdList(idList);

이 예제에서 idList의 각 값은 SQL 문의 IN 연산자에 동적으로 매핑되어 결과를 가져옵니다.

동적 SQL 활용

foreach를 사용하면 동적 SQL을 쉽게 작성할 수 있습니다. 예를 들어, 검색 조건이 다양한 경우에 유용합니다.

<select id="selectByCondition" parameterType="java.util.Map" resultType="...">
  SELECT * FROM your_table
  WHERE
  <foreach collection="conditions" item="condition" separator="AND">
    ${condition.key} = #{condition.value}
  </foreach>
</select>

이 경우 conditions는 Map 형태로 전달되며, 동적으로 조건을 생성합니다.

마무리

foreach는 MyBatis에서 데이터베이스 쿼리를 작성할 때 강력한 기능 중 하나입니다. 유연성과 간결한 코드를 통해 개발자들은 효율적으로 데이터베이스와 상호 작용할 수 있습니다. 이를 적절히 활용하면 다양한 상황에서 코드의 가독성과 유지 보수성을 향상시킬 수 있습니다.

반응형