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