반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 데이터탑입
- SQL
- Char[]
- 자바
- Spring
- 시뮬레이션
- json파싱
- sql태그
- 프로그래머스
- ClassPathResource
- Exception
- char
- 차이점
- 백준
- 알고리즘
- include태그
- java
- JSON
- 주사위굴리기
- 내맘대로정리
- 참조타입
- string
- 변수
- primitivetype
- 차이
- 코딩테스트
- 원시타입
- 자바오류
- mybatis
- ReferenceType
Archives
- Today
- Total
재채기는 H
MyBatis <sql>과 <include> 정리 본문
반응형
spring mapper xml파일을 작성할 때, 반복되는 문구에 대해 고민한 적이있다.
회사에서 받은 소스의 mapper XML파일은 공통으로 들어가는 조인 구문이 있었다.
잘못된 쿼리로 인해 반복되는 쿼리의 문구를 수정해야된다면, 이클립스에서 ctrl + f를 통해 일일이 찾아 수정해주어야했다.
이럴 때, 필요한 MyBatis문법이 <sql>과 <include>이다.
<sql> 태그에 id를 주어 DML에 삽입할 수 있다.
<sql id = "exampleSub">
SELECT A.VALUE
FROM TEMP.TABLE1 A
INNER JOIN TEMP.TABLE2 B
ON A.COLUMN = B.COLUMN
AND A.COLUMN2 = B.COLUMN2
INNER JOIN TEMP.TABLE3 C
ON A.COLUMN = C.COLUMN
AND A.COLUMN2 = C.COLUMN2
</sql>
id가 exampleSub sql 조각을 <include>태그로 불러와서 사용할 수 있다.
<select id = "sample" resultType = "java.util.HashMap">
SELECT *
FROM TEMP.MAIN
WHERE VALUE IN (
<include refid="exampleSub">
</include>
)
</select>
주의점으로는 <sql>태그는 <include>보다 상단에 선언되어야한다.
추가적으로
<include>태그에서 <property>를 통해 <sql>태그로 파라미터를 넘길 수 있다.
<sql id="userColumns">
${alias}.id,
${alias}.username,
${alias}.password
</sql>
<select id = "sample2" resultType = "java.util.HashMap">
SELECT
<include refid="userColumns"><property name="alias" value="t1"/></include>,
<include refid="userColumns"><property name="alias" value="t2"/></include>
FROM TABLE1 t1
CROSS JOIN TABLE2 t2
</select>
<sql>태그에서 ${}를 통해 파라미터를 넘겨준다. 좀 더 동적으로 사용할 수 있다.
<sql>태그와 <include>태그를 통해 쿼리의 반복성을 제거하고
쿼리의 재사용을 높일 수 있었다.
반응형
'spring' 카테고리의 다른 글
Spring ClassPathResource를 이용한 /src/main/resources 경로 JSON파일 파싱하기 (1) | 2022.07.31 |
---|---|
이클립스 프로젝트 import 안될때 (7) | 2020.07.19 |
Comments