-
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'Database > MyBatis' 카테고리의 다른 글
MyBatis - 대소문자 구분 없이 데이터 조회하기 (0) 2022.03.24 MyBatis - ${}와 #{}의 차이 (0) 2022.03.22 MyBatis - <choose>, <when>, <otherwise> 태그 (0) 2022.03.21 MyBatis - MyBatis의 <if> 태그 (0) 2022.03.21 MyBatis - DBMS 별 LIKE 문법 (0) 2022.03.21