根据条件

时间:2016-11-08 23:00:09

标签: dynamic ibatis

我正在使用iBATIS创建select语句。

我有4个条件,比如aUsers,bUsers,cUsers和dUsers,让我们把我的表称为b

现在我想用iBATIS实现以下SQL语句:

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

如果aUsers为null且休息不是,那么我希望查询为

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

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

如果cUsers为null且休息不是,那么我希望查询为

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

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

1 个答案:

答案 0 :(得分: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>