Develop
[DB] <sql> <include> 태그 사용하기 본문
< sql> 태그
: 다른 구문에서 재사용하기 위한 SQL 조각
사용 조건
- id 속성 값 필수
- 사용하려는 태그의 위치보다 먼저 선언하기
문법
<sql id="user">
and USER_NAME = #{userName}
</sql>
<include> 태그
: <sql> 문을 다른 구문에 포함(삽입) 시킨다
문법
<include refid="userName"/>
사용 예
<!--
게시글을 조회한다
-->
<select id="userNameSearch" parameterType="usVo" resultType="usVo">
SELECT /* userNameSearch */
A.USER_NAME
, A.USER_ID
, A.USER_EMAIL
FROM
USER A
WHERE
1=1
<include refid="user"/>
</select>
==
<!--
게시글을 조회한다
-->
<select id="userNameSearch" parameterType="usVo" resultType="usVo">
SELECT /* userNameSearch */
A.USER_NAME
, A.USER_ID
, A.USER_EMAIL
FROM
USER A
WHERE
1=1
and USER_NAME = #{userName}
</select>
즉 필요한 곳에 sql을 삽입하여 코드의 재사용성을 높일 수 있고 중복코드가 줄어든다.
where절 말고도 사용할 수 있으니 유용하게 쓰인다.
그러나 sql을 보고 바로 알아볼 수 없어 가독성에는 좋지않다.
또한 include를 할 때 앞에 조건이 있을 수도 있고 없을 수도 있지만
그에 따라 and를 썼다 지웠다 하지않기 위해서
where 1=1 을 기본으로 하고 (항상 참임)
뒤에 넣어주는 방식으로 한다.
참고한 글
(where, insert, select, table, join, 외부 sql-mapper.xml 접근이 궁금하다면 아래 글 참고)
[MyBatis] 중복 쿼리 줄여주는 sql, include, property 태그 문법 살펴보기 (tistory.com)
[MyBatis] 중복 쿼리 줄여주는 sql, include, property 태그 문법 살펴보기
다른 구문에서 재사용하기 위한 SQL 조각 사용 조건 id 속성 값 필수 사용하려는 태그의 위치보다 먼저 선언되어야 함 문법 ${alias}.id, ${alias}.username, ${alias}.password SQL 조각인 문을 DML (Data Manipulation
haenny.tistory.com