Java開發中的一些常用手段
阿新 • • 發佈:2018-12-18
用 BeanUtils應注意的事項:
引用:
import org.springframework.beans.BeanUtils;
參考格式:
BeanUtils.copyProperties(productInfo, orderDetail);//記住先拷貝 後賦值,因為null值也會覆蓋的//所有相同名字的欄位都會覆蓋
BeanUtils.copyProperties(productInfo, orderDetail);//記住先拷貝 後賦值,因為null值也會覆蓋的 orderDetail.setDetailId(KeyUtil.getUniqueKey());//orderDetail裡面productInfo傳過來 沒有DetailId orderDetail.setOrderId(orderId); //orderDetail裡面productInfo傳過來 沒有OrderId
貼上參考的結構和程式碼:
1.訂單內部傳輸物件
@Override @Transactional public OrderDTO create(OrderDTO orderDTO) {//建立訂單 買家資訊和訂單詳情物件 String orderId = KeyUtil.getUniqueKey();//建立一個唯一的訂單id BigDecimal orderAmount=new BigDecimal(BigInteger.ZERO);//訂單總價 List<CartDTO> cartDTOList=new ArrayList<>();//購物車 //1.查詢資料庫中商品的資訊(數量 價格),關鍵資料不能從前端取 for (OrderDetail orderDetail:orderDTO.getOrderDetailList()){//遍歷訂單詳情列表 ProductInfo productInfo = productService.findOne(orderDetail.getProductId());//每個詳情的商品資訊(訂單資訊[查商品資料庫單價]) if (productInfo==null){//查詢資料庫沒有該商品資訊 拋商品找不到異常 throw new SellException(ResultEnum.PRODUCT_NOT_EXIST); } //2.計算訂單總價 orderAmount = productInfo.getProductPrice() .multiply(new BigDecimal(orderDetail.getProductQuantity()))//單價*數量 .add(orderAmount);//每次迴圈總價累加 //訂單詳情寫進庫 BeanUtils.copyProperties(productInfo, orderDetail);//記住先拷貝 後賦值,因為null值也會覆蓋的 orderDetail.setDetailId(KeyUtil.getUniqueKey());//orderDetail裡面productInfo傳過來 沒有DetailId orderDetail.setOrderId(orderId); //orderDetail裡面productInfo傳過來 沒有OrderId orderDetailRepository.save(orderDetail); CartDTO cartDTO=new CartDTO(orderDetail.getProductId(),orderDetail.getProductQuantity()); cartDTOList.add(cartDTO); }