Spring Boot中Mongo CRUD Repository如何无循环提取ID为String列表
无需循环提取Mongo实体ID列表的实现方法
当然可以不用显式循环,直接用Java 8引入的Stream API就能搞定,代码更简洁,可读性也更强。
实现代码
假设你的Repository接口是EntityRepository,注入后直接用下面的写法:
// 注入你的Mongo Repository @Autowired private EntityRepository entityRepository; // 获取指定ID对应的实体ID列表 public List<String> getEntityIds(List<String> targetIds) { return entityRepository.findAllById(targetIds) .stream() .map(Entity::getId) .collect(Collectors.toList()); }
关键逻辑说明
findAllById(targetIds)返回Iterable<Entity>,Spring Data的Mongo实现已经支持直接调用stream()转换为流对象map(Entity::getId)通过方法引用,将每个实体对象映射为对应的ID字符串collect(Collectors.toList())把流中的ID元素收集为List<String>,直接返回即可
如果是要获取所有实体的ID列表,写法类似:
public List<String> getAllEntityIds() { return entityRepository.findAll() .stream() .map(Entity::getId) .collect(Collectors.toList()); }
内容的提问来源于stack exchange,提问作者Josh Hamp
相关产品推荐
相关产品推荐

