-
MyBatis - MyBatis의 <if> 태그Database/MyBatis 2022. 3. 21. 15:01
<if> 태그
<if> 태그의 활용
MyBatis의 <if> 태그는 조건식이 참인 경우 쿼리문을 실행한다. 전달받은 파라미터의 값에 따라 쿼리문을 동적으로 변할 수 있게 해 준다. 주로 where 절의 일보에 포함되어서 사용한다.
<if> 태그의 test 속성에는 논리 연산자를 사용한 조건식이 삽입된다. <if> 태그 안에는 조건식이 true일 경우 실행되어야 할 쿼리문을 작성한다. 가장 흔히 사용되는 조건식은 아래 예제와 같이 파라미터의 값이 null 인지 체크하는 방식이다.
<select id="findBoardList" resultType="boardList"> SELECT * FROM board_table WHERE title LIKE '%' || #{title} || '%' <if test="content != null"> OR content LIKE '%' || #{content} || '%' </if> </select>
위 코드에서는 content 파라미터의 값이 존재할 경우 <if> 태그 내부의 쿼리문이 실행된다. 또한, 조건식에는 AND, OR, !와 같은 관계 연산자 또한 사용할 수 있다.
null 비교
<if test="patameter != null"></if> <if test="patameter == null"></if>
파라미터의 값과 null을 비교하기 위해서는 '!=' 또는 '==' 연산자를 사용하면 된다.
숫자 비교
<if test="parameter == 5"></if> <if test="parameter > 5"></if> <if test="parameter >= 5"></if> <if test="parameter < 5"></if> <if test="parameter <= 5"></if> <if test="parameter != 5"></if>
파라미터의 값과 숫자를 비교하기 위해서는 위 코드와 같은 비교 연산자를 사용하면 된다.
문자 비교
<if test="parameter == 'a'"></if>
문자 비교를 위해 위 코드와 같이 작성한 경우 java.lang.NumberFormatException이 발생한다.
<if test="parameter == 'y'.toString()"></if> <if test='parameter.equals("y")'></if> <if test='parameter == "y"'></if>
Java에서는 char 형 데이터를 유니코드 값, 즉 숫자 형식으로 비교하기 때문에 예외가 발생한다. 따라서, 위 코드와 같은 형식으로 비교해주어야 한다.
문자열 비교
<if test='parameter.equals("string")'> <if test='parameter.equalsIgnoreCase("string")'> <if test="parameter.equals('string')"> <if test='parameter == "string"'> <if test='parameter.equals("string")'>
equals( )는 대문자, 소문자를 구분해서 비교하는 연산자이고, equalsIgnoreCase( )를 사용한 경우에는 대문자, 소문자를 구분하지 않고 비교할 수 있다.
and 연산자
<if test="parameter01 != null and parameter02 != null"></if>
and 연산자를 사용하기 위해서는 '&&'가 아닌 'and'를 사용해야 한다.
or 연산자
<if test="parameter01 != null or parameter02 != null"></if>
or 연산자를 사용하기 위해서는 '||'가 아닌 'or'를 사용해야 한다.
728x90'Database > MyBatis' 카테고리의 다른 글
Myabtis - <sql>, <include> 태그 (0) 2022.04.28 MyBatis - 대소문자 구분 없이 데이터 조회하기 (0) 2022.03.24 MyBatis - ${}와 #{}의 차이 (0) 2022.03.22 MyBatis - <choose>, <when>, <otherwise> 태그 (0) 2022.03.21 MyBatis - DBMS 별 LIKE 문법 (0) 2022.03.21