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 子句的主题。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!