我刚接触Java并使用Spring-Boot框架。我已经实现了一个小方法,它给出了一个transactionId,它提供了具有该transactionId的所有对象的列表。我只是在管理ServiceImpl中的列表时遇到了问题。因为我不能得到一个列表而不是一个单独的结果。
发布于 2020-10-25 14:27:10
如果映射器为实体的单个实例工作,则可以简单地迭代实体集合并一次映射一个实体。或者使用Java8 streams:
List<StoredMessageModTrackEntity> entityList = repo.findAllByTransactionId(transactionId);
return entityList.stream().map(mapper::toDtoMapper).collect(Collectors.toList());
与您的示例不同,如果entityList
为空,则上面的代码片段将返回一个空列表。除非您显式地需要返回null
(通过某种奇怪的API约定或类似的方式),否则不应该对空集合使用null
。这只会导致庞大的代码,因为所有消费者都将始终需要检查null
。如果你真的(我是说真的)需要null
,你可以保留If语句或者使用Optional
Optional.ofNullable(entityList).filter(Objects::nonNull)
.map(list -> list.stream().map(mapper::toDtoMapper)
.collect(Collectors.toList())).orElse(null);
https://stackoverflow.com/questions/64524582
复制相似问题