스크린샷 2025-09-11 오전 9.37.48.png

문제점 (조건이 많아질 때)

SELECT * FROM menu
WHERE category = ?
  AND price >= ?
  AND available = ?
  AND created_date >= ?
  AND seller = ?;

MyBatis의 Dynamic Query (동적 SQL)

mapper.xml:

<select id="findMenu" resultType="MenuDTO">
    SELECT *
      FROM menu
    <where>
        <if test="category != null">
            AND category = #{category}
        </if>
        <if test="price != null">
            AND price >= #{price}
        </if>
        <if test="available != null">
            AND available = #{available}
        </if>
    </where>
</select>

0. 세팅

매퍼 XML & 태그 속성