我正在使用 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 = ?)
我的代码有什么问题吗?
最佳答案
这按预期工作。默认 Settings.statementType
值为 StatementType.PREPARED_STATEMENT
,所以jOOQ默认在你的SQL字符串中生成绑定(bind)值占位符,可以在其他工具中执行,比如JDBC,Spring等。
您可以通过 ParamType.INLINE
getSQL()
的值(value)方法,或指定 Settings.withStatementType(StatementType.STATIC_STATEMENT)
更多细节请引用Javadoc中的解释: https://www.jooq.org/javadoc/latest/org/jooq/Query.html#getSQL--
关于java - 使用jOOQ构建SQL时如何将变量绑定(bind)到条件语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54321453/