我想根据单个查询中的参数列表(单个事务)从表中获取多个值。 请注意我在JOOQ中询问如何制作。为了说清楚,我有类似的内容:
代码
List<Integer> id = new ArrayList<>();
id.add(1);
id.add(3);
数据库中的表格
ID | Title |
------------
1 | one |
2 | two |
3 | three |
4 | four |
现在基于id的列表我想在单个事务中仅获取第一行和第三行。这有可能吗?
我已经尝试过这样的事情,但没有一种方法接受列表或任何集合作为参数。
dsl.select(Tables.TABLE.TITLE)
.from(Tables.TABLE)
.where(Tables.TABLE.ID.eq()) // no list argument
答案 0 :(得分:3)
您不想使用comparison predicate而是in predicate使用Field.in(Collection)
:
dsl.select(Tables.TABLE.TITLE)
.from(Tables.TABLE)
.where(Tables.TABLE.ID.in(id))
或直接使用Field.in(T...)
:
dsl.select(Tables.TABLE.TITLE)
.from(Tables.TABLE)
.where(Tables.TABLE.ID.in(1, 3))
换句话说,这不是关于jOOQ(或使用jOOQ与事务)的问题,但它通常是关于SQL的问题。