【问题标题】:jooq sql builder output give "?" at eq() in WHERE clausejooq sql builder输出给出“?”在 WHERE 子句中的 eq()
【发布时间】:2020-07-20 10:52:19
【问题描述】:

我复制示例代码here

整个代码块是这样的

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import static org.jooq.impl.DSL.*;


public static String sampleSql() {
    DSLContext create = DSL.using(SQLDialect.MYSQL);
    String sql = 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))
            .getSQL();
    return sql;
}

sampleSql() 的输出是

select BOOK.TITLE, AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME from BOOK join AUTHOR on BOOK.AUTHOR_ID = AUTHOR.ID where BOOK.PUBLISHED_IN = ?

但是为什么问号“?”,问号应该是1948。我错过了什么?

【问题讨论】:

  • 这是 jOOQ 新用户的常见问题。感谢您链接到相关教程部分,这可能会导致这里的混乱。我们会马上改进它:github.com/jOOQ/jOOQ/issues/10053

标签: sql jooq


【解决方案1】:

getSQL() 返回带有 ? 的预处理语句作为参数占位符。

如果你想内联你必须调用的参数:

getSQL(ParamType.INLINED);

请在此处找到 API 文档:https://www.jooq.org/javadoc/latest/org.jooq/org/jooq/Query.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 2015-04-27
    • 2014-01-09
    • 1970-01-01
    • 2015-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多