可选的条件表达式
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
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()的行为是未定义的。
反馈
您对此页面有任何反馈吗? 我们很乐意听到您的反馈!