본문 바로가기
카테고리 없음

IBATIS/MYBATIS 동적 쿼리 종류 및 사용법

by cook_code 2023. 5. 28.
반응형

 

동적 쿼리란? (PreparedStatement)

개념 : 파라미터 값에 의해 쿼리를 동적으로 변환해주는 기능 

장점 1 : 정적쿼리(Statement)의 비효율적인 면을 보완할 수 있습니다.  

장점 2 : where 절에 들어가는 조건절을 손쉽게 제어할 수 있습니다. 

장점 3 : 변수에 따라 쿼리를 바꿀 수 있어 하나의 쿼리로 여러 개의 기능을 연결할 수 있습니다.

단점 1 : 조건을 변경해 주어야 해서 유지보수가 어렵습니다. 

단점 2 : 쿼리에 로직이 삽입되므로 가독성이 저하됩니다. 

단점 3 : 쿼리가 로직에 대해 의존성을 띄게 됩니다.

 

IBATIS 동적 쿼리 태그

prepend : sql문에 선행하여 붙는 속성

property : 매개 변수 명

compareProperty : 비교할 다른 매개 변수 명 

compareValue : 비교 대상이 되는 값 


<isEqual> : property 의 값이 같을 때 태그 내의 쿼리를 실행합니다. 

<isNotEqual> : property 의 값이 다를 때 태그 내의 쿼리를 실행합니다.  

<isGraterThan> : property 의 값이 비교값 보다 큰 경우 쿼리를 실행합니다. 

<isGraterEqual> : property 의 값이 비교값 보다 크거나 같은 경우 쿼리를 실행합니다.

<isLessEqual> : property 의 값이 비교값 보다 작거나 같은 경우 쿼리를 실행합니다.

<isPropertyAvailable> : property 의 값이 유효할 경우 쿼리를 실행합니다.

<isNotPropertyAvailable> : property 의 값이 유효하지 않을 경우 쿼리를 실행합니다.

<isNull> : property 의 값이 null일 경우 쿼리를 실행합니다.

<isNotNull> : property 의 값이 null이 아닐 경우 쿼리를 실행합니다.

<isEmpty> : property 의 값이 비어있는 경우 쿼리를 실행합니다.

<isNotEmpty> : property 의 값이 비어있지 않은 경우 쿼리를 실행합니다.

<isParameterPresent> : parameter가 있을 경우 쿼리를 실행합니다.

<isNotParameterPresent> : parameter가 없을 경우 쿼리를 실행합니다.

<iterate> : parameter로 배열을 받아 쿼리를 실행한다. 

<dynamic> : 하위 태그에 일치되는 내용이 존재할 경우 쿼리를 실행한다. 

 

MYBATIS 동적 쿼리 태그

if : isEqual, isNotEqual, isNull, isNotNull, isEmpty, isNotEmpty 를 하나로 표현하도록 변경되었습니다. 

<choose><when><otherwise> : 케이스에 따라 조건이 달라질 때 사용합니다. 

<where><trim> : 조건에 따라 where절을 추가할 때 사용합니다. 

prefixOverrides : 하위 엘리먼트 처리 후 내용의 맨 앞에 해당 문자열이 있다면 제거합니다. 

suffixOverrides : 하위 엘리먼트 처리 후 내용의 맨 뒤에 해당 문자열이 있다면 제거합니다.

prefix : 하위 엘리먼트 처리 후 내용이 있다면 가장 앞에 붙여질 내용입니다. 

suffix : 하위 엘리먼트 처리 후 내용이 있다면 가장 뒤에 붙여질 내용입니다. 

set : 동적으로 update 구문 만들 때 사용합니다.

foreach : 배열 타입의 파라미터를 받을 때 사용합니다. 

  • collection : 값 목록을 가진 객체로 배열 또는 list
  • item : Collection 내의 개별 값을 나타내는 변수 이름 
  • open: 해당 블럭을 시작할 때 사용할 기호로 주로 '('
  • close: 해당 블럭을 시작할 때 사용할 기호로 주로 ')'
  • seperator: 각 item을 구분할 분리자 기호로 주로 ','

<bind> : 쿼리에서 사용할 변수를 생성합니다. 

 

참고 블로그

  • IBATIS/MYBATIS 동적 쿼리 태그
 

[MyBatis] iBatis, MyBatis 비교 정리(Dynamic Query)

iBatis( ~ 2.3)의 버전이 변경되면서 MyBatis(2.5 ~)로 변경이 되었다.Apache project팀에서 google code 팀으로 이동하면서 명칭이 변경변경된 사항들을 정리해보면 아래와 같다.Java 요구버전도 iBATIS는 JDK 1.4

velog.io

 

반응형