1. 程式人生 > >Java開發中的一些常用手段

Java開發中的一些常用手段

用 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);
        }