ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Myabtis - <sql>, <include> 태그
    Database/MyBatis 2022. 4. 28. 16:28

    <sql>, <include> 태그

    <sql> 태그

    <sql> 태그는 다른 구문에서 재사용 가능한 sql 구문을 정의할 때 사용한다. 

     

    <sql id="id값">
        재사용할 sql 구문
    </sql>

    사용 방법은 위와 같다. <sql> 태그의 id 속성에 값을 부여한 후 태그 내에 사용할 쿼리를 작성하면 된다.

     

    <sql> 태그 내에 있는 sql 구문을 재사용하기 위해서는 재사용할 쿼리의 상단에 선언되어야 한다. 특정 쿼리문에서 <sql> 태그를 불러왔지만, 상단에 선언되어 있지 않았다면 해당 <sql> 태그를 불러올 수 없을 것이다.

     

    <sql id="">
        title = #{title}
    </sql>

    위 코드와 같이 <sql> 태그 내에 파라미터 값을 추가해도 무방하다. 단, 해당 태그를 불러오는 쿼리문에서 <sql> 태그 내에 선언된 파라미터 값을 처리할 수 있는 인자 값이 존재해야 한다.

     

    <include> 태그

    같은 파일 내에 정의한 <sql> 태그를 불러오기 위해 사용되는 태그이다.

     

    <sql id="t1">
        where boardNo = #{boardNo}
    </sql>
    
    <select id="getTitle" resultType="String">
        select title from tbl_board
        <include refid="t1"/>
    </select>

    사용 방법은 위와 같다. <include> 태그를 선언하고, 해당 태그에 refid 속성을 추가한 후 속성 값으로 불러오고자 하는 <sql> 태그의 id 속성 값을 작성해주면 된다.

     

    <sql>, <include> 태그의 사용
    -- 게시물의 제목을 반환하는 쿼리문
    <select id="getTitle" resultType="String">
        select title from tbl_board
        where boardNo = #{boardNo}
    </select>
    
    -- 게시물의 내용을 반환하는 쿼리문
    <select id="getContent" resultType="String">
        select content from tbl_board
        where boardNo = #{boardNo}
    </select>
    
    -- 게시물의 작성자를 반환하는 쿼리문
    <select id="getWriter" resultType="String">
        select writer from tbl_board
        where boardNo = #{boardNo}
    </select>

    SQL Map XML 파일에 위와 같이 3개의 쿼리가 작성되어 있다고 가정해 보겠다. 위 쿼리문을 보면 공통적으로 똑같은 where 절이 중복돼서 사용되는 것을 확인할 수 있다.

     

    <sql id="where">
        where boardNo = #{boardNo}
    </sql>
    
    <select id="getTitle" resultType="String">
        select title from tbl_board
        <include refid="where"/>
    </select>
    
    <select id="getContent" resultType="String">
        select content from tbl_board
        <include refid="where"/>
    </select>
    
    <select id="getWriter" resultType="String">
        select writer from tbl_board
        <include refid="where"/>
    </select>

    이러한 상황에서 위와 같이 <sql>, <include> 태그를 사용하여 중복된 코드를 줄여줄 수 있다.


    출처

    https://kimvampa.tistory.com/176

     

    728x90

    댓글

Designed by Tistory.