我正在使用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中创建这样的查询?
答案 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>