我有以下 DTO:
@Data
public class MenuItemDTO {
private UUID siteUuid;
private UUID productUuid;
private boolean outOfStock;
public MenuItemDTO(MenuItem menuItem, boolean outOfStock) {
this.siteUuid = menuItem.getSiteUuid();
this.productUuid = menuItem.getProductUuid();
this.outOfStock = outOfStock;
}
}
我沒有物體outOfStock欄位,如果記錄不為空MenuItem,我想填寫outOfStock欄位(我只是保留缺貨的產品)。但我不確定是否有使用流的正確方法:
public List<MenuItemDTO> findAllBySiteBrandUuid(UUID siteUuid) {
return menuItemRepository.findAllBySiteUuid(siteUuid)
.stream()
.map(m -> new MenuItemDTO(m, m.getUuid() != null))
.collect(Collectors.toList());
}
1.由于我沒有在物體中保留outOfStock欄位,我的方法是否正確?MenuItemMenuItemDTO
2.我想知道是否有一種更優雅的方式通過正確使用流來處理.map(m -> new MenuItemDTO(m, m.getUuid() != null))部分。
uj5u.com熱心網友回復:
有相當多的重復。您將一個物件和一個物件的欄位傳遞給建構式。也許更優雅的方法是通過將邏輯移動到建構式來避免兩次傳遞資訊:
public MenuItemDTO(MenuItem menuItem) {
this.siteUuid = menuItem.getSiteUuid();
this.productUuid = menuItem.getProductUuid();
this.outOfStock = menuItem.getUuid() != null;
}
然后流映射簡化為:
public List<MenuItemDTO> findAllBySiteBrandUuid(UUID siteUuid) {
return menuItemRepository.findAllBySiteUuid(siteUuid)
.stream()
.map(MenuItemDTO::new)
.collect(Collectors.toList());
}
DTO 中的資訊是客戶需要的任何資訊,因此我們不能決定是否將布林值放在那里是正確的方法。我會說這很好,如果這將在客戶端使用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/435067.html
上一篇:無法呼叫擴展(JWT)OncePerRequestFilter。因為@Autowire失敗,所以this.Class回傳null
