ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • MyBatis - MyBatis의 <if> 태그
    Database/MyBatis 2022. 3. 21. 15:01

    <if> 태그

    <if> 태그의 활용

    MyBatis의 <if> 태그는 조건식이 참인 경우 쿼리문을 실행한다. 전달받은 파라미터의 값에 따라 쿼리문을 동적으로 변할 수 있게 해 준다. 주로 where 절의 일보에 포함되어서 사용한다.

     

    <if> 태그의 test 속성에는 논리 연산자를 사용한 조건식이 삽입된다. <if> 태그 안에는 조건식이 true일 경우 실행되어야 할 쿼리문을 작성한다. 가장 흔히 사용되는 조건식은 아래 예제와 같이 파라미터의 값이 null 인지 체크하는 방식이다.

     

    <select id="findBoardList" resultType="boardList">
        SELECT *
        FROM board_table
        WHERE title LIKE '%' || #{title} || '%'
        <if test="content != null">
            OR content LIKE '%' || #{content} || '%'
        </if>
    </select>

    위 코드에서는 content 파라미터의 값이 존재할 경우 <if> 태그 내부의 쿼리문이 실행된다. 또한, 조건식에는 AND, OR, !와 같은 관계 연산자 또한 사용할 수 있다.

     

    null 비교
    <if test="patameter != null"></if>
    
    <if test="patameter == null"></if>

    파라미터의 값과 null을 비교하기 위해서는 '!=' 또는 '==' 연산자를 사용하면 된다.

     

    숫자 비교
    <if test="parameter == 5"></if>
    
    <if test="parameter > 5"></if>
    
    <if test="parameter >= 5"></if>
    
    <if test="parameter < 5"></if>
    
    <if test="parameter <= 5"></if>
    
    <if test="parameter != 5"></if>

    파라미터의 값과 숫자를 비교하기 위해서는 위 코드와 같은 비교 연산자를 사용하면 된다.

     

    문자 비교
    <if test="parameter == 'a'"></if>

    문자 비교를 위해 위 코드와 같이 작성한 경우 java.lang.NumberFormatException이 발생한다.

     

    <if test="parameter == 'y'.toString()"></if>
    
    <if test='parameter.equals("y")'></if>
    
    <if test='parameter == "y"'></if>

    Java에서는 char 형 데이터를 유니코드 값, 즉 숫자 형식으로 비교하기 때문에 예외가 발생한다. 따라서, 위 코드와 같은 형식으로 비교해주어야 한다.

     

    문자열 비교
    <if test='parameter.equals("string")'>
    
    <if test='parameter.equalsIgnoreCase("string")'>
    
    <if test="parameter.equals('string')">
    
    <if test='parameter == "string"'>
    
    <if test='parameter.equals("string")'>

    equals( )는 대문자, 소문자를 구분해서 비교하는 연산자이고, equalsIgnoreCase( )를 사용한 경우에는 대문자, 소문자를 구분하지 않고 비교할 수 있다.

     

    and 연산자
    <if test="parameter01 != null and parameter02 != null"></if>

    and 연산자를 사용하기 위해서는 '&&'가 아닌 'and'를 사용해야 한다.

     

    or 연산자
    <if test="parameter01 != null or parameter02 != null"></if>

    or 연산자를 사용하기 위해서는 '||'가 아닌 'or'를 사용해야 한다.

     

    728x90

    댓글

Designed by Tistory.