2016-11-08 15 views
0

私はiBATISを使用してselect文を作成しています。条件に基づいてibatisにORを追加する

私はaUsers、bUsers、cUsersとdUsersなどの4つの条件を、持っているのは、今私はiBATISのと次のSQLステートメントを実装したいと思います

bと私のテーブルを呼び出してみましょう:

b.aUsers = aUsers OR b.bUsers = bUsers OR b.cUsers =のcUsers OR b.dUsers =のdUsers

aUsersがnullで、残りはその後、私は、クエリが

b.bUsersの=のbUsers OR b.cUsersようにしたいされていない場合= cユーザまたはb.dユーザ= dユーザ

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

cUsersがnullで、残りは、私は、クエリ等

b.aUsersの=のaUsers OR b.bUsers =のbUsers OR b.dUsers =のdUsers

になりたい、その後でない場合

ibatisでこのようなクエリを作成するにはどうすればよいですか?

答えて

1

このような場合は、Dynamic Queriesを作成する必要があります。

Unary Conditional Elementsを使用して、プロパティがnullかどうかを確認できます。

<isNull>プロパティがnullかどうかをチェックします。

<isNotNull>をチェックプロパティがnullでない場合

さらに、あなたの場合は、ネストされたisNotNullを必要とする可能性がある|| isNull次のように、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> 
関連する問題