PROGRAMMING/iBatis

iBatis 동적 태그 정리 및 속성-1

피곤한비버 2019. 8. 28. 15:53

ibatis에서 사용되는 기본 동적 태그에 대해 정리하기 전에

동적 태그에 사용되는 속성들에 대해서 설명하고 넘어가겠습니다.

 

◆ prepend : 태그 조건에 맞춰 실행될 sql문에 선행되어 붙을 SQL문구를 정의. (선택)

 property : 태그에서 사용할 주체가 되는 매개변수 명을 정의. (필수)

◆ compareProperty : property 매개변수와 비교할 다른 매개변수 명을 정의.

◆ compareValue : property 매개변수와 비교할 값을 정의.

    (compareProperty 또는 compareValue 둘 중 하나는 필수)

 

우선은 이정도로만 얘기하고

아래의 동적 태그에 관한 예시를 보면서

속성에 대한 설명을 더 해보겠습니다.

 

태그이름 같은의미의 비교연산자 의미
<isEqual> == property와 값 또는 다른 property가 같은지 체크
<isNotEqual> != property와 값 또는 다른 property가 같지 않은지 체크
<isGreaterThan> > property와 값 또는 다른 property보다 큰지 체크
<isGreaterEqual> >= property와 값 또는 다른 property보다 크거나 같은지 체크
<isLessThan> < property와 값 또는 다른 property가 작은지 체크
<isLessEqual> <= property와 값 또는 다른 property가 작거나 같은지 체크

사용 예시

//예시 1
<select id="selectQuery" parameterClass="parameterClassRoute" resultClass="resultClassRoute">
	SELECT * FROM TABLENAME 
    	<isEqual prepend="WHERE" property="ValueName" compareValue="1">
        	NAME = 'John'
            //또는 태그의 prepend="WHERE"속성을 지우고
            //WHERE NAME = 'John'
        </isEqual>
</select>

/*
property변수 값이 compareValue인 1과 같다면
실제 적용되는 쿼리는
SELECT * FROM TABLENAME WHERE NAME = 'John'
같지 않다면
SELECT * FROM TABLENAME
*/

//예시 2
<select id="selectQuery" parameterClass="parameterClassRoute" resultClass="resultClassRoute">
	SELECT * FROM TABLENAME WHERE NAME = 'John'
    	<isEqual prepend="AND" property="ValueName" compareValue="AGE">
        	AGE = '29'
        </isEqual>
        <isEqual property="ValueName" compareValue="nation">
        	='korea'
        </isEqual>
</select>

/* 
property변수 값이 AGE이면
실제 적용되는 쿼리는
SELECT * FROM TABLENAME WHERE NAME = 'John' AND AGE='29'
property변수 값이 nation이면
SELECT * FROM TABLENAME WHERE NAME = 'John' AND nation='korea'
둘다 아니라면 
SELECT * FROM TABLENAME
    
이처럼 하나의 select 쿼리에서 property값을 비교함으로써
서로 다른 쿼리를 실행할 수 있다.
*/

 

다음으로는 단일 조건일 경우에 쓰이는 태그들입니다.

태그이름 의미
<isPropertyAvailable> property의 값이 유효할 경우 태그에 포함된 쿼리 실행
<isNotPropertyAvailable> property의 값이 유효할 않을 경우 태그에 포함된 쿼리 실행
<isNull> property의 값이 null일 경우 태그에 포함된 쿼리 실행
<isNotNull> property의 값이 null이 아닐 경우 태그에 포함된 쿼리 실행
<isEmpty> property의 값이 비어있다면 태그에 포함된 쿼리 실행
<isNotEmpty> property의 값이 비어있지 않다면 태그에 포함된 쿼리 실행
<isParameterPresent> parameter가 존재하면 태그에 포함된 쿼리 실행
<isNotParameterPresent> parameter가 존재하지 않으면 태그에 포함된 쿼리 실행

사용방법은 위의 태그들과 같습니다. 다만, compareValue 속성값은 필요하지 않은 태그들입니다.