Java Spring-boot: 如何 return 一个列表而不是一个结果?

Java Spring-boot: how to return a list and not a single result?

我是 Java 的新手,正在使用 Spring-Boot 框架。我已经实现了一个小方法,给定一个 transactionId 给我一个具有该 transactionId 的所有对象的列表。我只是在管理 ServiceImpl 中的列表时遇到问题。因为我无法取回列表而不是单个结果。

如果映射器针对实体的单个实例工作,您可以简单地遍历实体集合并一次映射一个实体。或者您使用 Java8 流:

List<StoredMessageModTrackEntity> entityList = repo.findAllByTransactionId(transactionId);
return entityList.stream().map(mapper::toDtoMapper).collect(Collectors.toList());

与您的示例不同,如果 entityList 为空,则上述代码段将 return 为空列表。除非你明确需要 return null (通过一些奇怪的 API 合同或类似的)你不应该使用 null 空集合。这只会导致庞大的代码,因为所有消费者将始终需要检查 null。如果您真的(我的意思是真的)需要 null,您可以保留 if-statement 或使用 Optional:

Optional.ofNullable(entityList).filter(Objects::nonNull)
    .map(list -> list.stream().map(mapper::toDtoMapper)
    .collect(Collectors.toList())).orElse(null);