일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- BCrypt 적용
- 인증번호 전송
- ResponseEntity
- 스프링 프로젝트
- spring 프로젝트
- 스프링 HikariCP
- 스프링 업로드
- 이미지 출력
- 쇼핑몰 프로젝트
- 스프링 포트폴리오
- 스프링 게시판 구현
- 스프링 이미지
- spring 쇼핑몰
- 스프링 메일 전송
- 스프링 쇼핑몰 프로젝트
- 정규표현식
- 쇼핑몰 포트폴리오
- arraylist
- oracle 설치방법
- 회원가입 기능
- 스프링 파일 삭제
- 스프링 쇼핑몰
- 삭제 구현
- 스프링 게시판
- 스프링 프로젝트 기본 설정
- Bcrypt
- 파일 업로드
- 스프링 프로젝트 설정
- 로그아웃 기능 구현
- 로그인 기능
- Today
- Total
Kim VamPa
[MyBatis] <if> 사용법 본문
목표
MyBatis에서 사용하는 <if> 사용법
<if>를 왜 사용하고 어떻게 사용하는지를 알아봅니다.
순서
1. <if> 이해
2. 예제
1. <if>
조건식이 참인 경우 쿼리문을 실행합니다. 전달받은 파라미터 값에 따라 쿼리를 동적으로 변할 수 있게 해 줍니다. 주로 where의 일부로 포함되어서 사용합니다.
<if> 태그의 test 속성의 속성 값으로 논리 연산자(>, >=, <, <=, ==,!=)를 사용한 조건식을 삽입합니다. <if> 태그 안에는 조건에 조건식이 true일 경우 실행되어야 할 쿼리를 작성합니다. 가장 흔히 사용되는 조건식은 파라미터의 값이 null인지 체크하는 식입니다.
<select id="findBoardList" resultType="boardList">
select * from tbl_board
where title = '%'||#{title}||'%'
<if test="content != null">
OR content = '%'||#{content}||'%'
</if>
</select>
위의 코드는 content파라미터 값이 존재할 경우 <if> 태그 내부의 쿼리문이 실행이 됩니다.
조건식에는 관계연산자(AND, OR,!) 또한 사용할 수 있습니다. 아래는 Mybatis 공식 홈페이지의 예제입니다.
<select id="findActiveBlogLike"
resultType="Blog">
SELECT * FROM BLOG WHERE state = ‘ACTIVE’
<if test="title != null">
AND title like #{title}
</if>
<if test="author != null and author.name != null">
AND author_name like #{author.name}
</if>
</select>
2. 예제
2.1 null
<if test="prameter1 != null"></if>
<if test="parameter1 == null"></if>
2.2 숫자비교
<if test="prameter1 == 5"></if>
<if test="parameter1 > 5 "></if>
<if test="parameter1 >= 5 "></if>
<if test="parameter1 < 5 "></if>
<if test="parameter1 <= 5 "></if>
<if test="parameter1 != 5 "></if>
2.3 문자 비교
문자 비교를 위해서 아래와 같이 작성한 경우 java.lang.NumberFormatException이 발생합니다.
<if test="parameter1 == 'a' "></if>
OGNL(Object Graph Navigation Language) 인터프리터에서 'y'를 char 형으로 인식을 합니다. java에서는 char형 데이터를 유니코드 값, 즉 숫자로 처리하기 때문에 숫자 형식으로 비교를 시도하여서 예외(Exception)가 발생합니다.
따라서 아래와 같은 형식으로 비교를 해주어야 합니다.
<if test="parameter1 == 'y'.toString()">
<if test='parameter1.equals("y")'>
<if test='parameter1 == "y"'>
2.4 문자열 비교
'문자 비교'도 마찬가지이지만 equals()는 대문자, 소문자를 구분해서 비교하는 연산자이고, equalsIgnoreCase()를 사용한 경우 대소문자를 구분하지 않고 비교하는 연산자입니다.
<if test='parameter1.equals("string")'>
<if test='parameter1.equalsIgnoreCase("string")'>
<if test="parameter1.equals('string')">
<if test='parameter1 == "string"'>
<if test="parameter1 == 'string'">
2.5 and, or
<if test="parameter1 != null and parameter2 != null">
<if test="parameter1 != null or parameter2 != null">
<if test='parameter1 == "string" and parameter2 == "string"'>
<if test='parameter1 != null and parameter2.equals("string")'>
<if test="parameter1 != null and parameter2.equals('string')">
REFERENCE
- mybatis.org/mybatis-3/ko/dynamic-sql.html
- cofs.tistory.com/96
- java119.tistory.com/42
- myhappyman.tistory.com/126
DATE
- 2020.03.04
'공부 > 데이터베이스' 카테고리의 다른 글
[MyBatis] <choose>, <when>, <otherwise> (1) | 2021.03.06 |
---|---|
[MyBatis] <sql>, <include> 사용법 (2) | 2021.03.05 |
자동값 증가(Oracle, MySQL)(IDENTITY, AUTO_INCREMENT) (4) | 2021.02.03 |
[데이터베이스] 데이터 타입 정리(Oracle, MySQL) (2) | 2020.04.24 |
[데이터베이스][JOIN][1] 조인(JOIN)이란? (0) | 2020.04.21 |