티스토리 뷰
<if>문 안에서 substring 사용하기
요건 순수 테스트를 통한 나의 글입니다.
<when test='coltDt.substring(6,8) eq "01".toString()'>
AND TO_CHAR (sp.colt_dt, 'YYYYMM') = SUBSTR (#{coltDt}, 1, 6)
</when>
substring(시작index, 종료index+1)은 java기능과 같이 생각하면 되겠네요. string의 위치는 0부터 시작하고요.
test문을 '로 시작함에 유의하세요. java는 문자열일 경우 "만 사용가능하기 때문이지요.
출처 : java119.tistory.com/42?category=824525
MyBatis 비교문 지원 태그
<if> : 단일 조건문
<choose> <when> <otherwise> : 다중 조건문
*ibatis에는 isNull, isEmpty가 있었지만 MyBatis에는 없다.
문자열 비교
paraName1 이라는 파라미터가 null이 아니면서 값이 "test"와 동일한가?
<if test='paraName1 != null and(paraName1 eq "test".toString())'>
</if>
paraName1 이라는 파라미터가 "all" 이라는 문자와 동일 하지 않은가?
<if test='!paraName1.equals("all")'>
</if>
대소문자 관계없이 비교
paraName1 이라는 파라미터가 null이 아니면서 값이 "test" or "TEST"와 동일한가?
<if test='paraName1 !=null and paraName1.equalsIgnoreCase("test")'>
</if>
특정 값 비교
paraName1 이라는 파라미터의 값이 "Y"인지 검사할 경우
<if test='paraName1== "Y"'></if>
paraName1 이라는 파라미터의 값이 공백인지 검사할 경우
<if test='paraName1 == " "'></if>
주의 : 작은 따옴표가 밖에 있어야 한다.
숫자 비교
paraName1 이라는 파라미터의 값이 3보다 큰가?
<if test='paraName1 > 3'></if>
paraName1 이라는 파라미터의 값이 3보다 크거나 같은가?
<if test='paraName1 >= 3'></if>
paraName1 이라는 파라미터의 값이 3보다 작은가?
<if test='paraName1 < 3'></if>
paraName1 이라는 파라미터의 값이 3보다 작거나 같은가?
<if test='paraName1 <= 3'></if>
paraName1 이라는 파라미터의 값이 숫자로 된 문자열일 경우
<if test='paraName1 > "3"'></if>
//비교할 값을 쌍 따옴표로 묶어준다.
주의
요소 유형 "null"과(와) 연관된 "test" 속성의 값에는 '<' 문자가 포함되지 않아야 합니다.
이러한 예외가 발생하였다면?
원인
if 태그 안에 ">" 괄호를 인식하지 못하는 거다. 그렇다면 CDATA를 쓰면 어떨까? 역시 적용되지 않는다.
일단 원인은 ">" 괄호를 XML Parsing으로 인식한 건데, XML Parsing을 Text로 바꿔주는 CDATA 마저 적용되지 않는 현상
해결
기호 |
대체식 |
예제 |
< |
lt |
<if test="paraName1 lt 0"> |
> |
gt |
<if test="paraName1 gt 0"> |
<= (또는 =<) |
lte |
<if test="paraName1 lte 0"> |
>= (또는 =>) |
gte |
<if test="paraName1 gte 0"> |
or 문
||가 아닌 or로 쓰셔야 합니다.
or (O)
|| (X)
paraName1 값이 Y이거나 paraName2의 값이 N인 경우
<if> 문
<if test='paraName1 == "Y" or paraName2 == "N"'></if>
<choose> 문
<choose>
<when test='paraName1 == "Y" or paraName2 == "N"'>
</choose>
굳이 || 를 사용하실 분들이 있다면 굳이!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|amp;|amp;
<if test='paraName1 == "Y" |amp;|amp; paraName2 == "N"'></if>
and 문
&&가 아닌 and로 쓰셔야 합니다.
and (O)
&& (X)
paraName1 값이 Y이고 paraName2의 값이 N인 경우
<if> 문
<if test='paraName1 == "Y" and paraName2 == "N"'></if>
<choose> 문
<choose>
<when test='paraName1 == "Y" and paraName2 == "N"'>
</choose>
굳이 && 를 사용하실 분들이 있다면 굳이!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
&&
<if test='paraName1 == "Y" && paraName2 == "N"'></if>
null,nullString 체크
<if test='paraName1 == null'></if>
<if test="paraName1 == null"></if>
<if test="!paraName1.equals('') and paraName1!=null">
</if>
<if test="paraName1!=null and !paraName1.equals('')">
</if>
정리
1.문자열 비교
2.특정 값 비교
3.숫자 비교
4.or 문
5.and 문
6.null 체크
'Skill > spring' 카테고리의 다른 글
[해결방법]Project configuration is not up-to-date with pom.xml (0) | 2021.01.25 |
---|---|
[책] Spring in Action 제5판 (0) | 2021.01.11 |
[spring] Controller parameter에 따른 ajax 호출 변화 (0) | 2020.12.10 |
[mybatis] <include>에 parameter 넘기기 (0) | 2020.12.08 |
[spring] Controller 메소드 리턴타입 정리 (0) | 2020.12.08 |
- Total
- Today
- Yesterday
- 여러 컬럼 update
- object key
- springboot
- 진열사랑
- border-collapse
- 전후방탐색
- spring
- getter
- draw.io
- 정규식
- lombok
- element위치
- DatePicker
- setter
- QueryDSL
- sumifs
- excel
- CSS
- $.extend
- Javascript
- oracle
- 프로젝트명변경
- JQuery
- @ExceptionHandler
- PostgreSQL
- ul li로 테이블
- Keycode
- devtools
- caniuse
- $.each
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |