为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

哈士奇WWW 2022-05-21 13:34:20
我正在使用 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 = ?)我的代码有什么问题吗?
查看完整描述

2 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

这按预期工作。默认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--


查看完整回答
反对 回复 2022-05-21
?
收到一只叮咚

TA贡献1821条经验 获得超5个赞

您应该使用 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/


查看完整回答
反对 回复 2022-05-21
  • 2 回答
  • 0 关注
  • 294 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号