백엔드/Mybatis

[ Mybatis / 마이바티스 ] 동적 WHERE SQL <where>, <trim>

1. 사용법

  1. <where>는 태그에 의해 컨텐츠가 리턴되면 단순히 “WHERE”만을 추가
    컨텐츠가 “AND”나 “OR”로 시작한다면 그 “AND”나 “OR”를 제거
  2. <where>가 기대한 것처럼 작동하지 않는다면 <trim>를 사용자 정의

2. 쿼리

  • <where> 사용
<select id="findActiveBlogLike" resultType="Blog">
  SELECT * FROM BLOG
  <where>
    <if test="state != null">
         state = #{state}
    </if>
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
  </where>
</select>
  • <trim> 사용-맨 앞에 있는 연산자를(AND 또는 OR) 제거
<select id="findActiveBlogLike" resultType="Blog">
  SELECT * FROM BLOG
  <trim prefix="WHERE" prefixOverrides="AND |OR ">
    <if test="state != null">
         AND state = #{state}
    </if>
    <if test="title != null">
        OR title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
  </trim>
</select>

Mybatis 공식 사이트:

https://mybatis.org/mybatis-3/ko/dynamic-sql.html

 

MyBatis – 마이바티스 3 | 동적 SQL

동적 SQL 마이바티스의 가장 강력한 기능 중 하나는 동적 SQL을 처리하는 방법이다. JDBC나 다른 유사한 프레임워크를 사용해본 경험이 있다면 동적으로 SQL 을 구성하는 것이 얼마나 힘든 작업인지

mybatis.org