如何通过多个ID查找一些数据?

时间:2019-01-21 04:15:36

标签: java hibernate spring-boot jpa

我有ID数组类型。例)长id = [1、3、5] 那么如何找到使用数组类型id的数据呢?

数组数据类型不适用于findById()方法。 所以我尝试了循环功能。 但是这种风格对性能不好,因为它会多次执行该方法以获取id的长度。

Long id = [1, 3, 5];

for (int i = 0; i < id.length; i++) {
    repository.findById(id[i]);
}

板桌

id |标题|内容

=============================

1 | A ... |是...

2 | B ... | B是...

3 | C ... | C是...

4 | D ... | D是...

5 | E ... | E是...

我希望在查询下面使用JPA方法(非本机查询样式)获得相同的结果。

选择     标题,     内容 来自董事会 id = 1或id = 3或id = 5的地方;

结果

id |标题|内容

=============================

1 | A ... |是...

3 | C ... | C是...

5 | E ... | E是...

2 个答案:

答案 0 :(得分:1)

您可以使用方法findByIdIn(List<Long> ids)。这是用于获取数据的Spring数据JPA方法。

您的方法应为

List<Board> findByIdIn(List<Long> ids)BaordRepository

答案 1 :(得分:1)

如果您使用CrudRepository,则可以使用方法findAllById(Iterable<ID> ids)查找一些数据

String[] ids = new String[]{"1","2","3"};
Iterable<T> result = repository.findById(Arrays.asList(ids))