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

 

你可能感兴趣的:(java,Java,编码技巧)