作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试使用 Id 列表
查询
数据库,如果它们不存在,则用它们做一些事情。
我的计划是做类似的事情
List<Optional<MyObject>> fingById(Set<String> myIds);
我知道这不会开箱即用,因为我想即使所有的 id 都存在,也不能保证它们会被订购,所以如果它们中的一些存在,我会得到一些随机的 null 可选值,我可以围绕它们将无法访问返回它的 Id。
基本上我最终需要做的是检索这些对象,更新一个字段或使用默认值创建它们(如果不存在)。
批量执行此操作的最佳方式是什么?
谢谢:)
最佳答案
您可以通过 ID 将结果映射到 Map<String, Optional<MyObject>>
然后用 Optional.empty()
填空.
List<MyObject> findByIdIn(Set<String> ids);
default Map<String, Optional<MyObject>> mapByIdIn(Set<String> ids) {
Map<String, Optional<MyObject>> found = findByIdIn(ids)
.stream()
.collect(Collectors.toMap(MyObject::getId, Optional::of));
ids.stream()
.filter(id -> !found.containsKey(id))
.forEach(id -> found.put(id, Optional.empty()));
return found;
}
关于java - 如何在 Spring Data Repo 中模仿 List<Optional<T>> 之类的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215510/
我是一名优秀的程序员,十分优秀!