使用jOOQ构建SQL时如何将变量绑定到条件语句?

我正在使用 jOOQ-3.11.9 来构建 SQL。以下是我的代码:


String sql = DSL.using(SQLDialect.MYSQL)

        .select(DSL.asterisk())

        .from(table("service"))

        .where("name = ?", "service1")

        .getSQL();

我期望的是


select * from service where (name = "service1")

但结果是


select * from service where (name = ?)

我的代码有什么问题吗?


哈士奇WWW
浏览 295回答 2
2回答

RISEBY

这按预期工作。默认Settings.statementType值为StatementType.PREPARED_STATEMENT,所以 jOOQ 默认会在你的 SQL 字符串中生成绑定值占位符,可以用于在其他工具中执行,例如 JDBC、Spring 等。您可以将ParamType.INLINE值传递给getSQL()方法,或指定Settings.withStatementType(StatementType.STATIC_STATEMENT)有关详细信息,请考虑 Javadoc 中的解释: https ://www.jooq.org/javadoc/latest/org/jooq/Query.html#getSQL--

收到一只叮咚

您应该使用 jOOQ 生成的类中的字段名称:String sql = DSL.using(SQLDialect.MYSQL)     .select(DSL.asterisk())     .from(YOURENTITY)     .where(YOURENTITY.NAME.eq(nameParam))     .getSQL();YOURENTITY应该是项目中 jOOQ 生成的类。nameParam然后将是传递给包装上述查询的方法的参数。jOOQ 有很多很好的文档和很多例子: https ://www.jooq.org/doc/3.11/manual/sql-building/sql-statements/select-statement/where-clause/
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java