首页 > 解决方案 > 如何从 Spring Optional 返回特定字段而不是整个对象?

问题描述

如何从 Optional 而不是整个对象返回特定字段?

Optional<Scheme> scheme = schemeService.findBySerialNo(serialNo);
return scheme;

结果是:

{
    "schemeId": 000001,
    "personSN": "0000000001"
}

我想得到的只是 personSN 的值:“0000000001”。

标签: javaspringspring-boot

解决方案


我看到一些关于在 Optional 类型上使用 get() 方法的奇怪评论。只是为了澄清 - 打开它不是一个好习惯!Tbh get() 应该被删除...如果你想对包装对象进行一些操作,请使用 ifPresent() 方法,如果你想对特定字段进行一些操作 - 使用 map()。阅读文档并始终尽量不要使用 get()。此外,如果您想获取包装的对象,您应该知道使用 Optional 意味着在获取它时可能会出错,因此您可以由于获取失败而引发自定义异常


推荐阅读