[Mybatis] 다이나믹 SQL 개념과 예제

다이나믹 SQL은 실행할 쿼리의 일부를 조건에 따라 동적으로 생성하거나 변경하는 기술을 말합니다. 이를 통해 하나의 쿼리로 다양한 상황에 대응할 수 있습니다. MyBatis는 다이나믹 SQL을 생성하기 위한 다양한 XML 태그를 제공하여 효율적인 쿼리 작성을 지원합니다. 아래는 다이나믹 SQL의 개념과 예제입니다.

예제: 다이나믹 SELECT 쿼리

<!-- 다이나믹 SQL을 사용한 SELECT 쿼리 -->
<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>` 

위의 예제에서는 <where> 태그를 사용하여 다이나믹 SQL을 생성하고 있습니다. <if> 태그를 사용하여 authortitle 매개변수의 값을 확인하고, 해당 조건이 참일 때에만 조건을 추가하여 쿼리를 생성합니다.

예제: 다이나믹 INSERT 쿼리

<!-- 다이나믹 SQL을 사용한 INSERT 쿼리 -->
<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>` 

위의 예제에서는 <trim> 태그를 사용하여 다이나믹 SQL을 생성하고 있습니다. <if> 태그를 사용하여 titleauthor 매개변수의 값을 확인하고, 해당 값이 존재할 경우에만 값을 추가하여 쿼리를 생성합니다.

다이나믹 SQL은 XML 태그를 사용하여 조건에 따라 쿼리를 생성하는 방식으로 유연한 쿼리 작성을 가능케 합니다. MyBatis의 다양한 다이나믹 SQL 태그를 활용하여 쿼리를 동적으로 생성하고 필요한 조건에 따라 다양한 쿼리를 작성할 수 있습니다.