亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用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 關注
  • 293 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號