我使用org.jooq.impl.Executor
來創建一個查詢,我想傳遞給JdbcOperations
。我通過使用.where(Condition...)
來傳遞參數值。JOOQ如何做聯合和在哪裏在
鏈接執行器的方法後,我得到一個Query
對象。問題是當我打電話query.getSQL()
時,返回的查詢字符串包含參數?,?,?
而不是我插入的值。
這是我用來構建SQL查詢的代碼。 請注意TableA
有三個外鍵TableB
。我試圖用JOIN ON
和OR
來加入TableA
和TableB
,但是性能太慢了。
Query query = executor.select(fieldsToSelect)
.from("TableA")
.join("TableB").on("TableA.FirstForeignKey = TableB.TableBID")
.join("TableC")
.on("TableC.TableCID = TableB.TableCForeignKey")
.where(condition)
.union(executor.select(fieldsToSelect)
.from("TableA")
.join("TableB").on("TableA.SecondForeignKey = TableB.TableBID")
.join("TableC")
.on("TableC.TableCID = TableB.TableCForeignKey")
.where(condition)
.union(executor.select(fieldsToSelect)
.from("TableA")
.join("TableB").on("TableA.ThirdForeignKey = TableB.TableBID")
.join("TableC")
.on("TableC.TableCID = TableB.TableCForeignKey")
.where(condition)));
這是我如何創建Condition
對象爲遺囑執行人:
MySQLFactory.fieldByName(Integer.class, TABLE_NAME_TABLEA, "TableAID")
.in(ArrayUtils.toObject(ids));
這是我如何執行查詢:
jdbcOperations.query(query.getSQL(),query.getBindValues().toArray(), myMapper);
我怎樣才能正確地映射其值和使用參數查詢JdbcOperations
?
嗯,'Executor'和'JdbcOperations' ...這是一個比較老的版本jOOQ的,不是嗎?這是什麼版本? –
該項目有3.0.0-RC2版本的JOOQ – droid8421
呵呵,我知道了。 'Executor'類型只在開發jOOQ 3.0時纔出現,而不是在最終版本中。你一定要升級!無論如何,我會給你一個我認爲可以與你的版本一起工作的答案... –