[MyBatis]SQL 사용할때 <![CDATA[ 쿼리문 ]]> 을 쓰는 이유
반응형

< , > , & 등의 특수문자를 사용할 때 문자열과 태그를 구분해주기 위함이다.

MyBatis를 사용할 때 부등호 같은 내용을 처리할 때가 있다

<select id="selectFromRow" resultType="com.lec.spring.domain.WriteDTO">   
        SELECT
            wr_uid uid, 
            wr_subject subject, 
            wr_content content, 
            wr_name name, 
            wr_viewcnt viewcnt, 
            wr_regdate regDate 
        FROM 
            test_write
        Where
            viewcnt > 100
        ORDER BY 
            wr_uid DESC
        LIMIT #{from}, #{pageRows}
    </select>

위 쿼리의 경우 기본적인 게시판을 구성하는 DB가 있고 데이터 중

wr_viewcnt(조회수)가 100이 넘는 쿼리를 불러오고 싶다.

 

 

그런데? 오류가 나버린다.

 

 

 

위의 <select>태그와 조회수 검색 조건인 부등호 >를 컴퓨터가 괄호인지 부등호인지 구분을 하지 못하기 때문이다.

 

 

그럴때 <![CDATA[이 안에 쿼리문]]]>을 작성해주면 태그가 아닌 문자열로 인식해서 구분이 가능하다

 

<select id="selectFromRow" resultType="com.lec.spring.domain.WriteDTO">
        <![CDATA[    
        SELECT
            wr_uid uid, 
            wr_subject subject, 
            wr_content content, 
            wr_name name, 
            wr_viewcnt viewcnt, 
            wr_regdate regDate 
        FROM 
            test_write
        Where
            viewcnt > 100
        ORDER BY 
            wr_uid DESC
        LIMIT #{from}, #{pageRows}
        ]]>
    </select>

 

 

<, > 대신 &lt; 와 &gt; 를 쓰기도 하지만 부등호보다는 생산성이 떨어지고 너무 불편하기 때문에 CDATA를 쓰는 것이 낫다.

반응형