[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>
태그를 사용하여 해당 조건이 참일 경우에만 해당 조건을 쿼리에 추가합니다. 이렇게 하면 author
나 title
매개변수가 존재할 때 해당 조건이 추가되고, 없을 경우에는 추가되지 않는 동적 쿼리를 생성할 수 있습니다.
예제: 동적 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 태그를 조합하여 프로젝트의 요구 사항에 맞는 유연한 쿼리를 작성할 수 있습니다.