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的目的...... :)你确定你将每个新条件分配给变量吗?和()操作创建一个新条件。它不会修改左侧 –
啊好吧,这是有道理的,谢谢! –