프로그래밍/Spring (jsp)

mybatis sql mapper 사용시 CDATA 사용시 주의점.

Crazy_Kong 2017. 1. 4. 11:47

비교 연사자 관련하여 오류가 발생되기 때문에 다음과 같이 사용한다.


<!CDATA[[

SELECT * FROM TB WHERE cDate > CURRENT_DATE()

]]>



만약에 동적 쿼리를 사용하기 위하여 다음과 같이 사용할 경우 오류가 발생한다.


<!CDATA[[

SELECT 

    *

FROM 

    TB 

WHERE 

    cDate > CURRENT_DATE() 

    <if test="a != null">

    AND name = #{a}

    </if>

ORDER BY name DESC

]]>


위의 경우 비교연산자를 문자로 인식이 되지 않게 하기 위해 CDATA를 사용하였는데 <if 구문에서 문제가 발생한다.


이럴 경우 다음과 같이 분리해서 처리해야 한다.


<!CDATA[[

SELECT 

    *

FROM 

    TB 

WHERE 

    cDate > CURRENT_DATE() 

]]>

    <if test="a != null">

    AND name = #{a}

    </if>

<!CDATA[[

ORDER BY name DESC

]]>