2016-11-08 80 views
0

我正在使用iBATIS创建选择语句。根据条件在ibatis中追加OR

我有4个条件,如aUsers,bUsers,cUsers和dUsers,让我们打电话给我的表为b

现在我想实现与iBATIS的下面的SQL语句:

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

如果aUsers是零和休息没有的话,我希望查询是

b.bUsers = bUsers OR b.cUsers = cUsers或b.dUsers = dUsers

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

如果cUsers是零和休息都没有的话,我希望查询是

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

如何在ibatis中创建这样的查询?

回答

1

在这种情况下,您需要创建Dynamic Queries

您可以使用Unary Conditional Elements检查的属性是空或不是。

<isNull>检查属性是否为空。

<isNotNull>检查属性不为空

而且,你的情况可能需要一个嵌套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>