기록/BE

[Spring] include refid란?

코맹 2024. 8. 20. 14:31

<sql>

  • <sql> 태그는 다른 구문에서 재사용가능한 sql 구문을 정의할 때 사용한다.
  • 사용방법은 <sql> 태그 id 속성 추가 및 id 속성 값을 부여해준 후 태그 내에 사용할 쿼리를 작성하면 된다.
<sql id="id값">
	-- 사용할 쿼리
</sql>

 

💡 <sql> 태그 내에 있는 쿼리들을 재사용하고 싶다면 재사용할 쿼리의 상단에 선언되어야 한다.

특정 태그의 쿼리에서 <sql> 태그의 쿼리를 불러오는 명령을 하였지만, 상단에 선언되어 있지 않고 하단에 선언되어 있다면 불러올 수 없음

 

<sql> 태그 내에 파라미터 값을 추가하게 되면 해당 파라미터 값을 처리할 수 있는 인자 값이 존재해야 에러가 발생하지 않는다.

 

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

 

 

<include>

<include refid="search" />
  • 자주 쓰는 중복 쿼리를 하나로 묶어서 모아주는 역할
    • 반복적인 SQL문을 방지하기 위해 만들어진 태그
  • 같은 파일 내에 정의해둔 <sql> 태그 내의 쿼리들을 불러올 수 있다.
  • <include> 태그를 선언하고 해당 태그에 refid 속성을 추가해준 뒤 속성 값으로 불러오고자 하는 <sql> 태그의 id 속성 값을 삽입해주면 재사용할 수 있다.
<sql id="t1">
	where bno = #{bno}
</sql>

<select id="getTitle" resultType="String>
	select title from tbl_board
    <include refid="t1"></include>
</select>

 

 

예제

  • <include> 태그를 쓰지 않은 경우
<select id="getPage" resultType="int">
	select pageNum from vam_board where bno = #{bno}
</select>

<select id="getPage" resultType="String">
	select title from vam_board where bno = #{bno}
</select>

<select id="getPage" resultType="int">
	select content from vam_board where bno = #{bno}
</select>

 

  • Where ~~ 중복되는 코드 <sql>, <include>로 묶어서 사용한 경우
<sql id="where">
	where bno = #{bno}
</sql>

<select id="getPage" resultType="int">
	select pageNum from vam_board <include refid="where"></include>
</select>

<select id="getPage" resultType="String">
	select title from vam_board <include refid="where"></include>
</select>

<select id="getPage" resultType="String">
	select content from vam_board <include refid="where"></include>
</select>
  • ⭐ 반복되는 Where절을 <sql> 태그로 묶은 후 <include>태그를 통해 재사용할 수 있다.⭐

 

 

 

 

 

 

 

 

참고자료

 

MyBatis : include refid란? (사용법)

회사 유지보수 업무 중 다른 사람이 짠 쿼리를 보게 되었다.그 전에는 사실 보고도 지나가고, 보고도 지나가다가 오늘은 한 번 이게 뭔지 검색해 보자! 하고 도전.내가 봤던 쿼리의 경우에는 아

velog.io

 

[MyBatis] <sql>, <include> 사용법

목표 MyBatis에서 사용하는 , 사용법 , 를 왜 사용하고 언제 사용하는지를 알아봅니다. 순서 1. , 이해 2. 예제 1. , 이해 1.1 태그는 다른 구문에서 재사용가능한 SQL구문을 정의할 때 사용합니다. 사용

kimvampa.tistory.com

 

'기록 > BE' 카테고리의 다른 글

[JPA] EntityManagerFactory, EntityManager  (0) 2024.11.11
[Spring] Maven 개념 및 라이프사이클  (1) 2024.08.08