2016-11-08 2 views
0

저는 iBATIS를 사용하여 select 문을 만듭니다.조건에 따라 ibatis에 OR을 덧붙입니다.

나는 aUsers, bUsers, cUsers 및 dUsers 추천 조건을 가지고 있고이 iBATIS를 다음과 같은 SQL 문을 구현하고자하는 자

B가이 나의 테이블을 부르 자 :

b.aUsers의 =의 aUsers을 또는 b.bUsers = bUsers 또는 b.cUsers =의 cUsers 또는 b.dUsers =의 dUsers

aUsers가 null로, 나머지는 그 다음 내가 쿼리가

b.bUsers의 =의 bUsers 또는 b.cUsers되고 싶어하지 않는 경우 = 사용자 또는 b.dUsers = dUsers

// --------------------------------------------- -

cUsers가 null이며, 나머지는 내가 쿼리 등

b.aUsers의 =의 aUsers 또는 b.bUsers =의 bUsers 또는 b.dUsers =의 dUsers

되고 싶어 다음하지 않은 경우

ibatis에서 어떻게 이러한 쿼리를 만들 수 있습니까?

답변

1

그런 경우에는 Dynamic Queries을 만들어야합니다.

Unary Conditional Elements을 사용하면 속성이 null인지 아닌지 확인할 수 있습니다.

<isNull> 속성이 null인지 확인합니다.

<isNotNull> 확인 속성이 null가 아닌 경우

또한, 귀하의 경우 중첩 isNotNull을 요구할 수 || isNull anidadement. 따라서 aUsers가 null인지 아닌지를 확인한 다음 비슷한 속성을 수행 한 다음 다른 속성을 수행하면됩니다.

<select id="getUsers" parameterClass="USER" resultMap="your-result-map" > 
    select * from b 
    <dynamic prepend="WHERE"> 
     <isNull prepend="AND" property="aUsers"> 
      <isNotNull property="bUsers"> 
        <!-- ... and so on --> 
        <!-- your condition --> 
      </isNotNull> 
     </isNull> 
     <isNotNull prepend="AND" property="aUsers"> 
     <isNull property="bUsers"> 
       <!-- ... and so on --> 
       <!-- your condition --> 
     </isNull> 
     </isNotNull> 
    </dynamic> 
</select>