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

历史模型API

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

从历史上看,jOOQ 最初是一个像其他库一样的面向对象的 SQL 构建器库。这意味着所有查询及其语法组件都被建模为所谓的 QueryParts,它将 SQL 渲染变量绑定委托给子组件。API 的这一部分将被称为模型 API(或非 DSL API),jOOQ 仍然维护并内部使用它来进行增量查询构建。此处给出了增量查询构建的示例

DSLContext create = DSL.using(connection, dialect);
SelectQuery<Record> query = create.selectQuery();
query.addFrom(AUTHOR);

// Join books only under certain circumstances
if (join) {
    query.addJoin(BOOK, BOOK.AUTHOR_ID.eq(AUTHOR.ID));
}

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

此查询等效于之前使用 DSL 语法显示的查询。 实际上,在内部,DSL API 精确地构造了这个 SelectQuery 对象。 请注意,您可以始终访问 SelectQuery 对象以在 DSL 和模型 API 之间切换

DSLContext create = DSL.using(connection, dialect);
SelectFinalStep<?> select = create.select().from(AUTHOR);

// Add the JOIN clause on the internal QueryObject representation
SelectQuery<?> query = select.getQuery();
query.addJoin(BOOK, BOOK.AUTHOR_ID.eq(AUTHOR.ID));

此 API 是完全可变的,并且由于历史原因,早期 DSL API 元素继承了这种可变性

反馈

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

The jOOQ Logo