gpt4 book ai didi

java - 有条件地在 jooq 准备好的语句中包含子句

转载 作者:行者123 更新时间:2023-11-30 02:10:26 24 4
gpt4 key购买 nike

您好,我正在使用 JOOQ 在我的 java 应用程序中构建 SQL 语句。我需要在某个条件下在我的语句中包含 or 子句,并在另一个条件下省略。例如

org.jooq.Query ps =  select(field("q.*"))
.from(table("QUEUES q"))
.where(field("q.APPLICATION").eq("APP1"));

然后我需要根据其他一些变量取消查询中的 或 部分..

org.jooq.Query ps =  select(field("q.*"))
.from(table("QUEUES q"))
.where(field("q.APPLICATION").eq("APP1"))
.or(field("q.APPLICATION").eq("APP2"));

如果没有两个单独的语句(一个包含 or 语句,另一个不包含 or 语句),我无法弄清楚如何执行此操作。提前致谢。

最佳答案

您想要做的是使用 SelectConditionStep 的扩展,它允许您将查询分解为单独的步骤,并使用标志作为仅附加 的一个特定扩展的方法SelectConditionStep 进行查询。

给定您的查询和一个标记(boolean - 用于分隔要使用的 SelectConditionStep 的扩展),例如checkBothApps

boolean checkBothApps = false;

org.jooq.SelectJoinStep<R> joinStep = select(field("q.*"))
.from(table("QUEUES q"));

org.jooq.SelectConditionStep<R> conditionStep = joinStep.where(field("q.APPLICATION").eq("APP1"));

if (checkBothApps) {
// This condition will be added to the join step.
joinStep.or(field("q.APPLICATION").eq("APP2"));
}

编辑:测试代码。

关于java - 有条件地在 jooq 准备好的语句中包含子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50271415/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com