可选的条件表达式
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
boolean condition = ... create.select(BOOK.ID) .from(BOOK) .where(condition ? BOOK.ID.eq(10) : noCondition()) .fetch();
上述查询产生
-- If condition is true SELECT book.id FROM book WHERE book.id = 10 -- If condition is false SELECT book.id FROM book
noCondition()
表达式将被忽略。如果这意味着该子句为空,则整个子句将被省略。这不适用于投影 Record
类型的子句,包括SELECT 子句,行值表达式,或嵌套记录,以及函数调用,在这种情况下,将投影一个 NULL
值。
关于 noCondition()
的一些额外交互可以在TRUE 和 FALSE 条件一节中看到。
使用 noCondition()
作为列表达式,例如,通过使用 DSL.field(noCondition())
包装它,将产生一个 DSL.noField(BOOLEAN)。
noCondition()
表达式仅在 DSL API 中支持,而不在 模型 API 中支持,在模型 API 中,noCondition()
的行为是未定义的。
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!