프로그래머호이잇

Mabatis <where> 의미 본문

java

Mabatis <where> 의미

호이잇! 2017. 11. 10. 11:31

<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>

 

 

<where> 쓰지 않고 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>

</select>

 

위와 같이 겁니다. 이렇게 되면 어떤 문제가 발생하냐..

 

if 절이 모두 실행 되지 않는다면 sql 문장이

SELECT * FROM BLOG

  where

 

위와 같이 되서 에러가 발생합니다..ㅠㅠ

 

그리고 첫번쨰 if 절이 실행이 되지 않는다면..

SELECT * FROM BLOG

  where

 AND title like #{title}

 

where AND 시작하게 됩니다.

 

이러한 부분을 방지하여 주는 것이 <where> 입니다 AND OR 시작하면 지워주고 where 뒤에 아무것도 없다면 where자체를 만들어 주지 않는 역할을 한다네요~

'java' 카테고리의 다른 글

Mybatis #과 $ 차이  (0) 2019.08.28
jvm 메모리 관련 내용  (0) 2019.08.26
@param 사용이유  (0) 2017.10.25
@Transactional 사용 이유  (0) 2017.10.25
Insterceptor 와 filter 차이  (0) 2017.10.25