List<MyTable> result = DSL.using(configuration())
.select()
.from(MY_TABLE)
.where(MY_TABLE.ID1.equal(pk_id1))
.and(MY_TABLE.ID2.equal(fk_id2))
.and(MY_TABLE.ID3.equal(fk_id3))
.orderBy(MY_TABLE.ID.asc())
.limit(limit)
.fetchInto(MY_TABLE)
.map(mapper());
我嘗試寫一些代碼,讓我的查詢採取三種可選的id例如我想查詢最終是如何寫可選其中JOOQ條款
select * from my_table where ID1=5 and ID2=6 and ID3=7 .... etc
然而,我也想了能夠排除任何的ID的
select * from my_table where ID2=6 and ID3=7
或
select * from my_table where ID3=7
選項
的問題,這是第一個「where」子句屬於ID之一,其餘的都是阿富汗國家發展戰略,所以如果我if語句做了一個和我刪除了那裏,然後我也只是留下
List<MyTable> result = DSL.using(configuration())
.select()
.from(MY_TABLE)
.and(MY_TABLE.ID2.equal(fk_id2))
.and(MY_TABLE.ID3.equal(fk_id3))
.orderBy(MY_TABLE.ID.asc())
.limit(limit)
.fetchInto(MY_TABLE)
.map(mapper());
它不會工作。
我試圖尋找類似where id = *
的地方,其中*基本上沒有過濾器,但我找不到像這樣的東西。
我想它,但出於某種原因trueCondition總是評估爲真,所以我的查詢只返回一切。是否有另一個條件使用? –
@LukeXu:是的,這是trueCondition的目的...... :)你確定你將每個新條件分配給變量嗎?和()操作創建一個新條件。它不會修改左側 –
啊好吧,這是有道理的,謝謝! –