본문 바로가기
개발후기-프레임워크

Mybatis(마이바티스) 동적 쿼리 if문 문법, Mybatis(마이바티스) <if> 사용법, Mybatis(마이바티스) <if>사용방법, Mybatis(마이바티스) if 검사방법,

by devscb 2021. 11. 9.
반응형

Mybatis(마이바티스) 동적 쿼리 if문 문법, Mybatis(마이바티스) <if> 사용법, Mybatis(마이바티스) <if>사용방법, Mybatis(마이바티스) if 검사방법


Mybatis(마이바티스)는 DBMS엑세스를 쉽게 사용할수 있게 해주는 Java진영의 대표적인 ORM Framework 입니다.
Mybatis(마이바티스)는 동적쿼리 작성을 지원하여 SQL과 코드를 좀 더 간결하게 유지할 수 있습니다.
그 중 이번에는 if문 사용방법을 알아봅시다.

if문의 기본사용법


mybatis의 if문은 값을 확인하려는 조건식이 참일경우 쿼리문에 포함하도록 합니다.


<예제>


<select id="sql" resultType="map">
    SELECT * FROM MAP
    WHERE pid = '100'
    <if test="keyword != null">
        AND KEYWORD LIKE #{keyword}
    </if>
</select>



만일 위 예시에서 parameter로 전달받은 keyword값이 null일 경우,
위 쿼리는 아래와 같이 변환될 것입니다.


SELECT * FROM MAP WHERE pid = '100'



좀 더 다양한 예제를 살펴보겠습니다.

문자열 비교

 


<if test='paraName1== "Y"'></if>

// 다음과 같이 메소드 사용도 가능합니다.
<if test='!paraName1.equals("all")'></if>
 




숫자 비교

 


//para값이 3보다 큰가?
<if test='para > 3'></if>   
 
//para 값이 3보다 크거나 같은가?                                     
<if test='para >= 3'></if>

//para값이 3보다 작은가?  
<if test='para < 3'></if>

//para 이라는 파라미터의 값이 3보다 작거나 같은가?
<if test='para <= 3'></if>



주의할점으로, 이를 쓰다가 아래와 같은 에러 메시지를 본다면 다른 대안을 사용해야합니다.


요소 유형 "?"과(와) 연관된 "?" 속성의 값에는 '<' 문자가 포함되지 않아야 합니다.



원인 : 일단 원인은 ">" 또는 "<" 괄호를 XML Parsing으로 인식
해결법 : 아래와 같이 대체 식을 써서 해결이 가능합니다.
(gt, gte, lt, lte)


//para값이 3보다 큰가?
<if test='para gt 3'></if>   
 
//para 값이 3보다 크거나 같은가?                                     
<if test='para gte 3'></if>

//para값이 3보다 작은가?  
<if test='para lt 3'></if>

//para 이라는 파라미터의 값이 3보다 작거나 같은가?
<if test='para lte 3'></if>



그리고(and)조건


&&가 아닌 and로 써야 합니다.


<if test='para == "2" and para2 == "1"'></if>




또는(or)조건


||가 아닌 or로 써야 합니다.


<if test='para == "2" or para2 == "1"'></if>







choose, when, otherwise


if - else 구문 처럼 쓰기 위해서는 choose, when, otherwise 구문을 사용할 수 있습니다.


<select id="sql" resultType="map">
  SELECT * FROM MAP
  WHERE POIX = '100'
  <choose>
    <when test="keyword == 'test1'">
      AND KEYWORD LIKE #{keyword}
    </when>
    <when test="keyword == 'test2'">
      AND KEYWORD LIKE #{keyword}
    </when>
    <otherwise>
      AND KEYWORD = '경기'
    </otherwise>
  </choose>
</select>



여기까지 마이바티스 <if> 사용법에 대해 알아보았습니다.
다음에 또 다른 태그 사용법을 알아볼 수 있도록 하겠습니다.


Mybatis(마이바티스) 동적 쿼리 if문 문법, Mybatis(마이바티스) <if> 사용법, Mybatis(마이바티스) <if>사용방법, Mybatis(마이바티스) if 검사방법,
mybatis choose, mybatis when, mybatis otherwise,

#mybatis,#framework,#orm,#if,#if문,#choose,#when,#otherwise,#마이바티스,#마이바티스,#choose문,#when문,#mybatis동적쿼리,#동적쿼리

https://devscb.com/post/60

 

Mybatis (Mybatis) dynamic query if statement grammar, Mybatis (Mybatis) <if> usage, Mybatis (Mybatis) <if> usage, Mybatis (Mybat

Mybatis (MyBatis) dynamic query if statement grammar, Mybatis (MyBatis) <if> How to use, Mybatis (Mybatis) <if> How to use, Mybatis (Mybatis) if test method Mybatis is a representative ORM

devscb.com

 

728x90
반응형

댓글