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

jOOQ 作为不进行代码生成的 SQL 构建器

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

我们强烈建议使用 jOOQ 的 代码生成器,以充分利用 jOOQ!

但是,如果您的模式是动态的,则不必使用代码生成器。 这是所有用例中最简单的一种,允许为任何数据库构建有效的 SQL。 在这种用例中,您将不使用 jOOQ 的代码生成器,甚至可能不使用 jOOQ 的查询执行工具。 而是,您将使用 jOOQ 的查询 DSL API 将字符串、文字和其他用户定义的对象包装到面向对象、类型安全的 AST 中,从而为您的 SQL 语句建模。 此处给出一个示例

// Fetch a SQL string from a jOOQ Query in order to manually execute it with another tool.
// For simplicity reasons, we're using the API to construct case-insensitive object references, here.
Query query = create.select(field("BOOK.TITLE"), field("AUTHOR.FIRST_NAME"), field("AUTHOR.LAST_NAME"))
                    .from(table("BOOK"))
                    .join(table("AUTHOR"))
                    .on(field("BOOK.AUTHOR_ID").eq(field("AUTHOR.ID")))
                    .where(field("BOOK.PUBLISHED_IN").eq(1948));
String sql = query.getSQL();
List<Object> bindValues = query.getBindValues();

然后可以使用 JDBC 直接执行使用 jOOQ 查询 DSL 构建的 SQL 字符串,使用 Spring 的 JdbcTemplate,使用 Apache DbUtils 和许多其他工具(请注意,由于 jOOQ 默认使用 java.sql.PreparedStatement,这将为“1948”生成绑定变量。 在此处阅读有关绑定变量的更多信息)。

您还可以避免分别获取 SQL 字符串和绑定值

String sql = query.getSQL(ParamType.INLINED);

如果您希望仅将 jOOQ 用作 SQL 构建器,则本手册的以下部分将对您有帮助

  • SQL 构建:本节包含大量关于使用 jOOQ API 创建 SQL 语句的信息
  • 纯 SQL:本节包含的信息对于那些想要将 表表达式列表达式等作为纯 SQL 提供给 jOOQ 的人特别有用,而不是通过生成的工件
  • 绑定值:本节介绍如何在 jOOQ 中管理和/或内联绑定值。

反馈

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

The jOOQ Logo