首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用jOOQ构建SQL时,如何将变量绑定到条件语句?

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

Stack Overflow用户
提问于 2019-01-23 14:48:36
回答 2查看 116关注 0票数 1

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

代码语言:javascript
复制
String sql = DSL.using(SQLDialect.MYSQL)
        .select(DSL.asterisk())
        .from(table("service"))
        .where("name = ?", "service1")
        .getSQL();

我期望的是

代码语言:javascript
复制
select * from service where (name = "service1")

但结果是

代码语言:javascript
复制
select * from service where (name = ?)

我的代码有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-24 03:10:54

这与预期的一样。默认的SQL值是StatementType.PREPARED_STATEMENT,因此jOOQ在默认情况下在Settings.statementType字符串中生成绑定值占位符,该占位符可用于在其他工具中执行,如JDBC、Spring等。

可以将ParamType.INLINE值传递给getSQL()方法,或指定Settings.withStatementType(StatementType.STATIC_STATEMENT)

有关更多详细信息,请考虑Javadoc中的解释:https://www.jooq.org/javadoc/latest/org/jooq/Query.html#getSQL--

票数 0
EN

Stack Overflow用户

发布于 2019-01-23 16:28:23

您应该使用jOOQ生成的类中的字段名称:

代码语言:javascript
复制
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/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54321453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档