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 构建器,则本手册的以下部分将对您有帮助
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!