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 속성값은 필요하지 않은 태그들입니다.