这是一个实验性功能,因此可能会发生变化。使用风险自负!
设计
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
模型 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));
反馈
您对此页面有任何反馈吗?我们很乐意听取您的意见!