可用版本:Dev (3.21) | 最新版 (3.20) | 3.19 | 3.18 | 3.17 | 3.16

这是一个实验性功能,因此可能会发生变化。使用风险自负!

设计

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

模型 API(查询对象模型或org.jooq.impl.QOM)是由每个org.jooq.QueryPart实现的辅助 API,允许用户公开访问 jOOQ 的内部查询对象模型结构。例如

// Create an expression using the DSL API:
Field<String> field = substring(BOOK.TITLE, 2, 4);

// Access the expression's internals using the model API
if (field instanceof QOM.Substring substring) {
    Field<String> string = substring.$string();
    Field<? extends Number> startingPosition = substring.$startingPosition();
    Field<? extends Number> length = substring.$length();
}

传递给 DSL API 的每个参数在模型 API 上都有一个带有 $ 前缀的访问器方法,用于公开包装的参数。使用这些访问器方法,用户可以手动或通过模型 API 遍历 API来遍历表达式树。像模式匹配这样的更新的 Java 语言特性对于此类操作非常有用,特别是当我们计划密封整个查询对象模型 API 时。

所有模型 API 都是不可变的,但仍然可以使用等效的带有 $ 前缀的 setter 方法创建新表达式,这些方法不会改变原始表达式,而是返回副本

// Produces a substring(BOOK.TITLE, 2, 4) column expression
QOM.Substring substring = (QOM.Substring) substring(BOOK.TITLE, 2, 4);

// Produces a substring(BOOK.TITLE, 3, 5) column expression
substring.$startingPosition(val(3)).$length(val(5));

这些基本操作允许对使用DSL API以及SQL 解析器创建的表达式树进行强大的SQL 转换

反馈

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

The jOOQ Logo