[mybatis] sql, include

2023. 2. 20. 14:00·A - 종료 및 관심 밖/sql

<sql> 태그

  • 다른 구문에서 재사용가능한 SQL구문을 정의할 때 사용
  • <sql>태그 id속성 추가 및 id속성 값을 부여 해준 후 태그 내에 사용할 쿼리를 작성하여 사용한다
  • <sql> 태그 내에 있는 쿼리들을 재사용하고 싶다면 재사용할 쿼리의 상단에 선언되어야 한다
<sql id="userColumns"> 
	-- 사용할 쿼리
	${alias}.id
	,${alias}.username
	,${alias}.password 
</sql>

<select id="selectUsers" resultType="map">
  select
    -- sql 조각을 다른 구문에서 사용할 때 include를 사용한다
    -- name은 sql에서 사용한 변수를 입력할 때 사용한다. sql에서는 paramater를 넘길 수 없으므로 property를 사용한다
    <include refid="userColumns">
        <property name="alias" value="t1"/>
    </include>,
    <include refid="userColumns">
        <property name="alias" value="t2"/>
    </include>
  from some_table t1
    cross join some_table t2
</select>

<include> 태그

  • 같은 파일 내에 정의해둔 <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> -- t1에 where절만 있기에 여기에 위치한다
</select>

다른 Mapper의 <sql> 사용하기

  • refid 입력 시 참조할 mapper의 namespace까지 함께 적어준다

common-Mapper.xml

<mapper namespace="mapper.common-Mapper">
    <sql id="board_col">
        ${alias}id,
        ${alias}subject,
        ${alias}context
    </sql>
</mapper>

board-Mapper.xml

<select id="selectUser">
    SELECT 
        -- refid 입력 시 참조할 mapper의 namespace까지 함께 적어준다
        <include refid="mapper.common-Mapper.board_col">
            <property name="alias" value="b."/>
        </include>
    FROM 
        board b
</select>

레퍼런스

https://kimvampa.tistory.com/176

https://mybatis.org/mybatis-3/ko/sqlmap-xml.html

https://java119.tistory.com/102

저작자표시 비영리 변경금지 (새창열림)
'A - 종료 및 관심 밖/sql' 카테고리의 다른 글
  • 프로그래머스 스쿨 SQL 고득점KIT_SUM,MAX,MIN 답안지 (MYSQL)
  • 프로그래머스 스쿨 SQL 고득점KIT_SELECT 답안지 (MYSQL)
  • [mysql] 프로시저와 함수
  • [mybatis] forEach
dev-moons
dev-moons
주니어 개발자의 개발지식 학습 내용부터 java, python 등 실무 중심으로 필요한 내용들을 정리하는 블로그입니다
  • dev-moons
    dev-moons의 개발 블로그 | 프론트부터 백엔드까지
    dev-moons
  • 전체
    오늘
    어제
    • 분류 전체보기 (29)
      • P - 기한이 있는 목표 (4)
        • 개발지식 (4)
      • A - 장기적인 목표 (0)
      • R - 일반적인 관심사 (1)
      • A - 종료 및 관심 밖 (25)
        • 독서 (1)
        • spring (11)
        • javascript (2)
        • sql (6)
        • db (1)
        • 자료구조론 (2)
        • springboot 게시판 만들기 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    m1mac
    자료구조론
    mysql
    java
    SQL
    스프링
    디자인패턴
    Spring
    SQL고득점KIT
    스프링입문
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
dev-moons
[mybatis] sql, include
상단으로

티스토리툴바