如何使用 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语句,那就更清楚了。这是将两个以上的布尔变量组合到一个复杂的布尔表达式的正确方法吗?使用括号也不起作用。

答案非常简单:

test="deletedParticipation and canceledParticipation and openedParticipation"

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

您可以使用

以下内容:

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

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

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

最新更新