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