Language/Spring

[MyBatis] CDATA

idleday 2022. 12. 16. 23:45
 

MyBatis – 마이바티스 3 | 소개

마이바티스는 무엇인가? 마이바티스는 개발자가 지정한 SQL, 저장프로시저 그리고 몇가지 고급 매핑을 지원하는 퍼시스턴스 프레임워크이다. 마이바티스는 JDBC로 처리하는 상당부분의 코드와

mybatis.org

 

MyBatis

MyBatis는 개발자가 지정한 SQL, 저장프로시저 매핑을 지원하는 SQL 매퍼(Mapper) 프레임워크이다.

  • JDBC로 처리하는 상당부분의 코드와 파라미터 설정 및 결과 매핑을 대신해준다.
  • DB에 원시타입, Map 인터페이스, 자바 POJO를 설정해서 매핑하기 위해 XML애노테이션을 사용할 수 있다.
  • SQL을 XML 파일에 작성한다. 클래스나 JSP처럼 코드 안에 작성하는 방식보다 SQL 변환이 유연하고 가독성이 좋다.

<![CDATA[...]]> 

 

쿼리를 작성할 때, xml에서 '<', '>', '&'  를 태그로 인식하는 경우가 있다.

에러 방지를 위해 태그가 아니라 실제 쿼리에 필요한 코드라고 알려줘야 한다.

 

CDATA 안에 쿼리를 사용하면 쿼리 내용의 괄호나 특수문자를 XML parser로 인식하지 않고 "문자열"로 인식한다.

(XML parser 방지)

 

문법

<![CDATA[ 쿼리 내용 ]]>

 

예시

 

전체 쿼리 CDATA 사용

<select id="getUserList" resultMap="UserVO">
    <![CDATA[
    select *
    from user
    where id > 3
    ]]>
</select>

 

조건문 중간에 CDATA 사용

<select id="getUser" resultType="UserVO">
select * from user
<if test="id != null">
where id  <![CDATA[<]]> 3;
</if>
</select>

Choose문에서 CDATA 사용

<select id="getUser" resultMap="UserVO">
    <![CDATA[
    select *
    from user
    where  1=1
    ]]>
    <choose>
        <when test='id != null and user_type =="1"'>
            <![CDATA[
                salary > 100
            ]]>
        </when>
        <otherwise>
            <![CDATA[
                salary < 100
            ]]>
        </otherwise>
    </choose>
</select>

괄호

<select id="getUser" resultType="UserVO">
SELECT *
FROM user
WHERE id <![CDATA[<]]> ;
</select>

'Language > Spring' 카테고리의 다른 글

[iBATIS/MyBATIS] 반환(Return)결과  (0) 2022.12.23
[iBATIS/MyBATIS] MyBatis 개념  (0) 2022.12.23