亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否正確處理 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 關注
  • 121 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號