我想根据单个查询(单个事务)中的参数列表从表中获取多个值。 请注意,我问的是如何在 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
最佳答案
您不想使用 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 的一般问题。
关于java - 根据单个事务中的参数列表选择多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25643981/