可用版本:Dev (3.21) | 最新版 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

jOOQ: 引用 Step 类型

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

按照惯例,jOOQ 的所有 DSL API 都由名称以 Step 结尾的接口组成,例如 org.jooq.SelectFromStep,这是 DSL API 中用户可以附加 FROM 子句 的步骤

在编写 动态 SQL 查询时,用户可能会尝试显式引用这些类型,例如

SelectConditionStep<?> c =
create.select(T.A, T.B)
      .from(T)
      .where(T.C.eq(1));

if (something)
    c = c.and(T.D.eq(2));

Result<?> result = c.fetch();

使用此用户代码,可以动态地将谓词添加到查询。但有一些注意事项

  • 在 jOOQ 3.x 中,DSL API 在很大程度上是可变的,但将来可能会发生变化。假设可变性的代码可能会中断。
  • DSL API 保证小版本之间方法的源代码兼容性,但不保证类型的兼容性,如本手册的这一节所述。为了发展 DSL,有时需要替换实现 DSL 的类型层次结构。如果您将方法调用链接起来,使其看起来像实际的 SQL,您将不会注意到这些变化(因为方法调用仍然兼容)。但是,如果您将 Step 类型分配给局部变量,或在您的 API 中传递它们,那么该代码可能会中断。

最好使用有关 动态 SQL 的部分中提到的方法之一。此外,这篇博客文章更详细地阐述了创建可选 SQL 子句的主题。

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo