如何使用MyBatis组合复杂的布尔表达式?

时间:2016-02-16 08:28:34

标签: sql mybatis

我有以下MyBatis代码片段,但SQL代码不会在我的完整SQL语句中执行(布尔变量具有正确的值):

<when test="deletedParticipation == true and canceledParticipation == true and openedParticipation == false">
     AND     ( myTable.myColumn1 IS NOT NULL OR myTable.myColumn2 = 1 )                     
</when>

我认为更清楚,如果我没有向您展示完整的SQL语句。这是将两个以上的布尔变量组合到一个复杂的布尔表达式的正确方法吗?使用括号也不起作用。

2 个答案:

答案 0 :(得分:0)

答案很简单:

test="deletedParticipation and canceledParticipation and openedParticipation"

...工作正常,无需将它们与true进行比较,因为它们已经是布尔表达式...如果三个参数中的一个为false或null,则测试将为false,因此无需检查null任

答案 1 :(得分:0)

您可以使用以下内容:

<if test="deletedParticipation.booleanValue() and canceledParticipation.booleanValue() and !openedParticipation.booleanValue()">

请注意,您始终可以在对象上使用Java方法(即public)。所以你也可以做类似的事情

<if test="someCollection != null and someCollection.size() > 0">