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 | 31 |
Tags
- AWS
- db
- string_agg()
- enumtype
- 지옥같은git
- 리스트중복제거
- mybatis
- anymatch메서드
- ansible
- WordPress
- Annotation
- 중복제거
- 권한정책
- conponent
- route53
- port닫기
- 열려있는포트
- listnull
- Java
- lightsail
- wordpress블로그
- awsconsole
- instance생성
- 리스트중복값
- stereotypeannotation
- 널포인터에러
- enum
- PostgreSQL
- 3tierarchitecture
- Spring
Archives
- Today
- Total
Anyway
[Mybatis] <trim> 동적 쿼리 사용하기 본문
[SQL <trim> 동적 쿼리 사용하기]
[<trim> 속성]
1. prefix
: 실행될 쿼리의 <trim> 문 안에 쿼리 가장 앞에 붙여준다.
2. prefixOverrides
: 실행될 쿼리의 <trim> 문 안에 쿼리 가장 앞에 해당하는 문자들이 있으면 자동으로 지워준다.
3. suffix
: 실행될 쿼리의 <trim> 문 안에 쿼리 가장 뒤에 붙여준다.
4. suffixOverrides
: 실행될 쿼리의 <trim> 문 안에 쿼리 가장 뒤에 해당하는 문자들이 있으면 자동으로 지워준다.
[코드예시로 살펴보기]
1. <sql id="conditionPerson">
- sql 조각을 정의하는데 사용한다.
- <sql> 태그 내부에 정의된 sql문은 재사용이 가능하다.
다른 sql 구문에서 <include> 태그를 사용하여 이 sql 조각을 포함시킬 수 있다.
ex) <include refid="conditionPerson(id)"></include>
2. <trim prefix="WHERE" prefixOverrides="AND|OR">
- <trim> 태그는 sql 문을 조정하는데 사용한다.
필요하지 않은 접두사나 접미사를 제거하거나, 특정 조건에 따라 추가적인 텍스트를 삽입할 때 유용하다. - 'prefix="WHERE"'
최종 SQL 쿼리에 "WHERE"이라는 접두사를 추가한다.
다만 조건이 하나도 추가되지 않을 경우 삽입되지 않는다. - 'prefixOverrides="AND|OR"'
AND|OR로 시작하는 부분이 있으면 그 접두사를 제거한다.
이는 쿼리의 첫 번째 조건 앞에 'AND' 또는 'OR' 을 붙지 않게 하기 위함이다.
3. <if> 태그
- <if> 태그는 조건에 따라 sql 구문의 일부를 포함할지 여부를 결정한다.
- name이 비어있지 않다면 'AND name= #{name}' 이라는 조건이 sql 구문에 추가된다.
- <if test="age != 0">
'age'가 0이 아닌 경우에 "AND age = #{age} '라는 조건이 추가되도록 한다.
4. 'AND DELETED=false'
- 항상 sql 구문에 포함
- DELETE 컬럼 값이 false인 행만 선택되도록 제한
[최종 동작 요약]
이 SQL 조각은 name과 age라는 두 가지 파라미터에 따라 WHERE 절을 동적으로 생성한다.
- name이 비어 있지 않으면 AND name = #{name}이 추가된다.
- age가 0이 아니면 AND age = #{age}가 추가된다.
- DELETED 컬럼이 false인 행만 선택된다.
- 최종적으로 SQL 구문에서 조건이 하나라도 추가되면 자동으로 "WHERE" 절이 포함된다.
'Java > Spring' 카테고리의 다른 글
[Spring] @RequestBody 사용하기 (0) | 2024.08.28 |
---|---|
[Spring] 정적 팩토리 메서드 패턴 (0) | 2024.08.27 |
[Spring] @Builder 패턴 사용하기 (0) | 2024.08.27 |
[Spring] @Configuration (0) | 2024.08.26 |
[Spring] @RequestMapping이란? - Annotation (0) | 2024.08.22 |