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

收到一只叮咚
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/
添加回答
举报
0/150
提交
取消