为了账号安全,请及时绑定邮箱和手机立即绑定

是否正确处理 SQL 查询中的空值?

是否正确处理 SQL 查询中的空值?

慕雪6442864 2022-09-14 10:26:26
我使用此代码通过ID获取商家名称。@GetMapping("pages")public Page<WpfPaymentsDTO> pages(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) {    return wpfPaymentsService.findAll(page, size)                             .map(g -> WpfPaymentsDTO.builder()                             .id(g.getId())                             .status(g.getStatus())                             .merchant_id(getMerchantName(g.getMerchant_id()))                             .build());  }private String getMerchantName(int id) {          Optional<Merchants> obj = merchantService.findById(id);           return obj.get().getName();}但是当找不到名字时,我得到这一行:java.lang.NullPointerException: null.merchant_id(getMerchantName(g.getMerchant_id()))有没有办法设置空字符串,并且在找不到Object时不破坏代码?
查看完整描述

4 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

而不是调用使用更多可选方式的解决方案,如:obj.get().getName()

obj.map(Merchants::getName).orElse("");

当找不到时,它将返回空字符串。您可以在上面的代码中更改为任何其他默认值,这更适合您的情况。Merchants""

如果可以的话下面的代码也会处理这种情况:g.getMerchant_id()null

private String getMerchantName(Integer id) {      
    return Optional.ofNullable(id)
        .flatMap(i -> merchantService.findById(i))
        .map(Merchants::getName)
        .orElse(<default value>);
}

它将变成可选的,所以当它成为这个代码将只是返回,否则它将用于查找然后获取其名称。 在此处删除嵌套的可选选项。idnull<default value>idMerchantsflatMap


查看完整回答
反对 回复 2022-09-14
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

private String getMerchantName(int id) {      
    Optional<Merchants> obj = merchantService.findById(id);    

    return obj.isPresent() ?  obj.get().getName() : "";
}


查看完整回答
反对 回复 2022-09-14
?
FFIVE

TA贡献1797条经验 获得超6个赞

您可以返回一个空字符串,以避免如果名称为 null :NPE

private String getMerchantName(int id) {      
    Optional<Merchants> obj = merchantService.findById(id);       
    return obj.isPresent() ?  obj.get().getName() : "";
}

然后,该方法应该处理一个空字符串,并可能引发异常(例如)。merchant_idIllegalArgumentException


查看完整回答
反对 回复 2022-09-14
?
动漫人物

TA贡献1815条经验 获得超10个赞

我认为我们可以在返回之前确定此对象是否为空


查看完整回答
反对 回复 2022-09-14
  • 4 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信