我正在使用 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
提交
取消