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

标签 java mysql jooq

我正在使用 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/

相关文章:

MySQL选择完全错误的索引

java - JOOQ 映射问题(DataTypeException)

java - 为什么时间戳不以 UTC 时间存储?

java - 如何使用Java程序读取dicom文件

java - 如何将图像添加到 ListView

java - Spring Boot Data JPA 问题——创建具有名称的 bean 时出错

java - GUI学生申请表

php - Left Join After Where 子句

java - 如何从Mysql数据库在android studio中检索带有图像的单行(id,name,..)?

java - 在 jooq 3.11.11 试用版的 META-INF/maven/plugin.xml 中找不到插件描述符