일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 이미지 출력
- 스프링 업로드
- 삭제 구현
- Bcrypt
- 스프링 HikariCP
- 스프링 쇼핑몰
- 쇼핑몰 포트폴리오
- 스프링 프로젝트 설정
- 스프링 메일 전송
- 회원가입 기능
- BCrypt 적용
- 스프링 쇼핑몰 프로젝트
- 정규표현식
- 스프링 게시판 구현
- 스프링 프로젝트 기본 설정
- 스프링 파일 삭제
- oracle 설치방법
- 로그아웃 기능 구현
- 스프링 게시판
- 스프링 프로젝트
- spring 쇼핑몰
- ResponseEntity
- 스프링 이미지
- arraylist
- 쇼핑몰 프로젝트
- spring 프로젝트
- 인증번호 전송
- 스프링 포트폴리오
- 로그인 기능
- 파일 업로드
- Today
- Total
Kim VamPa
[MyBatis] <sql>, <include> 사용법 본문
목표
MyBatis에서 사용하는 <sql>, <include> 사용법
<sql>, <include>를 왜 사용하고 언제 사용하는지를 알아봅니다.
순서
1. <sql>, <include> 이해
2. 예제
1. <sql>, <include> 이해
1.1 <sql>
<sql> 태그는 다른 구문에서 재사용가능한 SQL구문을 정의할 때 사용합니다. 사용방법은 <sql>태그 id속성 추가 및 id속성 값을 부여 해준 후 태그 내에 사용할 쿼리를 작성하면 끝입니다.
<sql id="id값">
-- 사용할 쿼리
</sql>
하지만 주의해야 할 <sql> 태그 내에 있는 쿼리들을 재사용하고 싶다면 재사용할 쿼리의 상단에 선언되어야 한다는점입니다. 특정 태그의 쿼리에서 <sql>태그의 쿼리를 불러오는 명령을 하였지만, 상단에 선언되어있지 않고 하단에 선언되어 있다면 불러올수 없습니다.
<sql>태그 내에 파라미터 값을 추가해줘도 상관없습니다. 단 해당 태그를 불러오는 쿼리문에서 <sql> 태그 내에 선언된 파라미터 값을 처리할 수 있는 인자 값이 존재해야만 에러가 나지 않습니다.
<sql id="t1">
title = #{title}
</sql>
1.2 <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>
</select>
2. 예제
SQL Map XML 파일에 3개의 쿼리가 작성되어 있다고 가정하겠습니다.( 3개 모두 그냥 아무 의미 없는 테이블을 출력하는 코드입니다. )
<select id="getPage" resultType="int">
select pageNum from vam_board where bno = #{bno}
</select>
<select id="getTitle" resultType="String">
select title from vam_board where bno = #{bno}
</select>
<select id="getContent" resultType="String">
select content from vam_board where bno = #{bno}
</select>
3개의 쿼리를 보면 공통적으로 똑같은 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="getTitle" resultType="String">
select title from vam_board <include refid="where"></include>
</select>
<select id="getContent" resultType="String">
select content from vam_board <include refid="where"></include>
</select>
REFERENCE
DATE
- 2020.03.03
'공부 > 데이터베이스' 카테고리의 다른 글
[MyBatis] <trim> 사용법 (5) | 2021.03.07 |
---|---|
[MyBatis] <choose>, <when>, <otherwise> (1) | 2021.03.06 |
[MyBatis] <if> 사용법 (1) | 2021.03.04 |
자동값 증가(Oracle, MySQL)(IDENTITY, AUTO_INCREMENT) (4) | 2021.02.03 |
[데이터베이스] 데이터 타입 정리(Oracle, MySQL) (2) | 2020.04.24 |