개발자의 끄적끄적

[ibatis / mybatis] 조건문 사용방법 [펌] 본문

개발/sql

[ibatis / mybatis] 조건문 사용방법 [펌]

효벨 2019. 12. 3. 03:00
728x90
반응형

[ibatis / mybatis] 조건문 사용방법 [펌]

 

전자정부프레임워크를 이용해서 쿼리문을 작성하던중

 

ibatis / mybatis 의 조건문에 대해 검색을 하던도중

 

정리가 너무 잘되어 있어서 도움을 받은 글이 있어서 

 

소장 및 참고하고자 퍼왔습니다!

 

출처는 아래 명시했습니다.

 

다들 개발에 도움들 되시길!!

 

 

 

 

ibatis(mybatis) 쿼리 xml을 작성할때 조건문이 필요할 경우가 생긴다.

ibatis(mybatis)의 장점은 조건을 주면서 동적쿼리를 생성할수 있다는 장점이 있다.

즉, 프로시저를 사용하지 않아도 어느정도의 출력이 가능하다는 이야기임.

 

다음과 같은 테이블이 있다고 가정하자

 

-  board

 

 id 

int 

 title

varchar 

 content

text 

 create_id

varchar 

 update_id

varchar 

 

 

위의 기준으로 생성된 테이블에서 예를들기 위해 몇가지 조건에 따라 비교를 하도록 하겠음

 

1. update_id null/not null 체크 조건문

 

- ibatis(isNull / isNotNull)

<isNull property="update_id"> 조건절 </isNull> <isNotNull property="update_id"> 조건절 </isNotNull>

 

-mybatis(if / choose when otherwise)

<if test="update_id == null"> 조건절 </if> <if test="update_id != null"> 조건절 </if> 또는<choose> <when test="update_id == null"> null 조건절 </when> <otherwise> not null 조건절 </otherwise> </choose>

 

2. update_id 공백유무 체크 조건문

 

- ibatis(isEmpty / isNotEmpty)

<isEmpty property="update_id"> 조건절 </isEmpty> <isNotEmpty property="update_id"> 조건절 </isNotEmpty>

-mybatis(if / choose when otherwise)

<if test="update_id == ''"> 조건절 </if> <if test="update_id != ''"> 조건절 </if> 또는<choose> <when test="update_id == ''"> 공백일경우 조건절 </when> <otherwise> 공백 아닐경우 조건절 </otherwise> </choose>

mybatis의 공백조건 체크를 위와같이 조건을 주었는데도 체크가 되지 않을 경우에 

하단 내용 처럼 

쌍따옴표("") -> 홑따옴표('') and 홑따옴표('') -> 쌍따옴표("")로 변경을 해주자 

문자열쪽에서 문제가 발생하는거 같음

 

3. id(숫자) 비교체크 조건문

 

- ibatis(isGreaterThan/isGreaterEqual/isLessThan/isLessEqual)

<isGreaterThan property="id" compareValue="3"> 3보다 크다 </isGreaterThan> <isGreaterEqual property="id" compareValue="3"> 3보다 크거나 같다 </isGreaterEqual> <isLessThan property="id" compareValue="3"> 3보다 작다 </isLessThan> <isLessEqual property="id" compareValue="3"> 3보다 작거나 같다 </isLessEqual>

- mybatis(if/choose when otherwise)

<if test='id > 3'> 3보다 크다 </if> <if test='id >= 3'> 3보다 크거나 같다 </if> <if test='id < 3'> 3보다 작다 </if> <if test='id <= 3'> 3보다 작거나 같다 </if> 또는<choose> <when test='id > 3'> 3보다 크다 </when> <when test='id == 3'> 3이다 </when> <when test='id < 3'> 3보다 작다 </when> </choose>

 

 

 

4. 검색 조건 선택후 검색버튼 클릭했을경우라고 가정

    (문자열) 비교체크 조건문 

 

- ibatis(isEqual / isNotEqual + compareValue)

<isEqual property="search_key" compareValue="title"> 조건절 </isEqual> <isNotEqual property="search_key" compareValue="content"> 조건절 </isNotEqual>

- mybatis는 공백조건의 경우와 동일하므로 생략

 

위와같이 비교를 들 수 있을 것이다.

본인의 생각으로 

ibatis는 일일이 태그를 조건문 갯수에 따라 추가를 해줘야 하는 번거로움이 있는 반면,

mybatis는 JSTL처럼 일반적인 방식으로 사용을 해줄수 있어 라인수도 줄고 동적쿼리 작성하는데 코드작성이 좀더 수월한거 같다. 

 

※ 만약 하나 이상의 조건을 mybatis에서 줄경우   

    && = and

    || = or 

    로 하여서 여러개의 property로 비교가 가능하다.

 

 



출처: https://roqkffhwk.tistory.com/127 [야근싫어하는 개발자]


반응형
Comments