[Mybatis] 동적 SQL 개념과 예제

동적 SQL은 쿼리의 일부 조건이나 내용을 조건에 따라 동적으로 생성하거나 변경하는 기능을 말합니다. 이를 통해 하나의 쿼리로 다양한 상황에 대응할 수 있습니다. MyBatis는 동적 SQL을 생성하기 위해 다양한 XML 태그를 제공합니다. 각 태그를 사용하여 동적 SQL을 작성할 수 있습니다. 아래는 MyBatis에서 동적 SQL을 사용하는 예제입니다.

예제: 동적 SELECT 쿼리

매퍼 XML 파일:

<select id="selectBooks" resultType="Book">
  SELECT * FROM books
  <where>
    <if test="author != null">
      AND author = #{author}
    </if>
    <if test="title != null">
      AND title = #{title}
    </if>
  </where>
</select>` 

이 예제에서는 <select> 쿼리 내에 <where> 태그를 사용하여 동적으로 조건을 추가하고, <if> 태그를 사용하여 해당 조건이 참일 경우에만 해당 조건을 쿼리에 추가합니다. 이렇게 하면 authortitle 매개변수가 존재할 때 해당 조건이 추가되고, 없을 경우에는 추가되지 않는 동적 쿼리를 생성할 수 있습니다.

예제: 동적 INSERT 쿼리

매퍼 XML 파일:

<insert id="insertBook" parameterType="Book">
  INSERT INTO books (title, author)
  VALUES
  <trim prefix="(" suffix=")" suffixOverrides=",">
    <if test="title != null">
      #{title},
    </if>
    <if test="author != null">
      #{author},
    </if>
  </trim>
</insert>` 

이 예제에서는 <insert> 쿼리 내에 <trim> 태그를 사용하여 동적으로 값을 추가합니다. <trim> 태그 내에서 <if> 태그를 사용하여 해당 값이 존재할 경우에만 해당 값을 추가합니다. 또한, <trim> 태그의 suffixOverrides 속성을 사용하여 마지막에 추가된 쉼표를 제거합니다.

동적 SQL을 사용하면 쿼리의 일부 조건이나 내용을 편리하게 생성할 수 있습니다. MyBatis에서 제공하는 다양한 동적 SQL 태그를 조합하여 프로젝트의 요구 사항에 맞는 유연한 쿼리를 작성할 수 있습니다.