12월 22, 2023

Spring MyBatis 사용하는 법, DQM DEM.xml 주석 작성법

 Spring에서 MyBatis를 사용하는 경우 

<![CDATA[]]>

이 태그를 본 사람들이 있을 것이다 .


간단히 말해서 CDATA란 character data, 한 마디로 문자열을 뜻한다. 


즉 , <![CDATA[]]> 

이라고 쓰고 해당 태그 안에 코드를 쓰면  [ ] 안에 있는 문자는 파싱되지 않고 그대로 문자열로 출력된다는 의미이다. 


DQM 이나 DEM에서 select 쿼리를 쓸 때 <,  >, = 등의 기호를 쓸 때가 많은데 파싱 중에 태그로 인식될 확률이 있어 CDATA안에 넣어서 사용하는 것이다. 


특히 xml 안에서 주석을 사용하고 싶을 때 사용하는 

<!-- --> 의 경우에도 

 CDATA 안에서 사용하면 xml의 주석이 아닌, literally string으로 인식하기 때문에 CDATA 태그 안에 사용하면 무조건 에러가 난다. 


CDATA 안 쿼리에 직접 주석을 작성하고 싶다면 /* */ 주석을 사용해야 한다. 




예시로 

<resultMap>

    <result property="" column=""/> 

</resultMap>

<select id = "" parameterType="" resultMap="" >

    <![CDATA[

        쿼리

    ]]> 

</select>


이런식의 구조로 DEM과 DQM을 작성하면 된다. 그리고 주석을 사용하고 싶다면 반드시 CDATA 밖에 


<resultMap>

    <result property="" column=""/> 

</resultMap>

<!-- 주석 --> 

<select id = "" parameterType="" resultMap="" >

    <![CDATA[

        쿼리

    ]]> 

</select>


이런식으로 작성하거나, 

CDATA 태그 안에 작성하려면 

<resultMap>

    <result property="" column=""/> 

</resultMap>

<select id = "" parameterType="" resultMap="" >

    <![CDATA[

        쿼리 /* 주석입니다 */

    ]]> 

</select>


이런식으로 실제 쿼리에서 인식할 수 있도록 작성해주어야 한다.