根据单个事务中的参数列表选择多个行

时间:2014-09-03 12:11:36

标签: java sql jooq

我想根据单个查询中的参数列表(单个事务)从表中获取多个值。 请注意我在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

1 个答案:

答案 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的问题。