spring: beanutils.copyproperties将一个对象的数据塞入到另一个对象中(合并对象)...

spring: beanutils.copyproperties将一个对象的数据塞入到另一个对象中(合并对象)

它的出现原因: BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。

 

我有一个Category分类表对象,和一个ProductInfo商品表对象

我需要的数据格式是(以分类作为基数,分类下面有多条帖子):

data:[
   {
      "cid":1,
      "name":"灌水",
     "theads":[
         {
             "id":1,
             "cid":1,
             "name":"有喜欢这歌的吗?"
             "time":"2018-12-12 18:25" 
          },
          {
             "id":1,
             "cid":1,
             "name":"有喜欢这歌的吗?"
             "time":"2018-12-12 18:25" 
          }
      ]
  } ,{
      "cid":2,
      "name":"文学",
     "theads":[
         {
             "id":18,
             "cid":2,
             "name":"徐志摩的诗"
             "time":"2018-12-12 18:25" 
          },
          {
             "id":21,
             "cid":2,
             "name":"鲁迅的散文"
             "time":"2018-12-12 18:25" 
          }
      ]
  }   
]

  

代码如下

 ResultVO resultVO = new ResultVO();
        //ProductVO productVO = new ProductVO();
        //List<ProductInfoVO> productInfoVOList  = new ArrayList<ProductInfoVO>();
        //productVO.setProductInfoVOList(productInfoVOList);
        //resultVO.setData(productVO);
        //查询商品
        List<ProductInfo> productInfoList = product.findAll();


        //查询商品类目(一次性读完)
        //传统方法
        // List<Integer> categoryTypeList = new ArrayList<>();
        //for (ProductInfo productInfo: productInfoList)
       // {
        //    categoryTypeList.add(productInfo.getCategoryType());
        //}
        //java8-lambda方法
        List<Integer> categoryTypeList = productInfoList.stream().map(e -> e.getCategoryType()).collect(Collectors.toList());
        List<ProductCategory> CategoryList = category.findByCategoryTypeIn(categoryTypeList);


        //拼合数据
        for (ProductCategory category: CategoryList)
        {
            //productCategory
            ProductVO productVO = new ProductVO();
            productVO.setCategoryType(category.getCategoryType());
            productVO.setCategoryName(category.getCategoryName());


            //productInfo
            List<ProductInfoVO> productInfoVOList = new ArrayList<>();
            for (ProductInfo productInfo : productInfoList)
            {
                if(productInfo.getCategoryType().equals(category.getCategoryType()))
                {
                    //老方法:
                    ProductInfoVO productInfoVO = new ProductInfoVO();
                    productInfoVO.setProductId(productInfo.getProductId());
                    productInfoVO.setProductName(productInfo.getProductName());
                    productInfoVOList.add(productInfoVO);

                    //新方法:将productInfo属性复制到productInfoVO1中
                    //beanutils.copyproperties
                    ProductInfoVO productInfoVO1 = new ProductInfoVO();
                    BeanUtils.copyProperties(productInfo, productInfoVO1);
                    productInfoVOList.add(productInfoVO1);
                }
            }
            productVO.setProductInfoVOList(productInfoVOList);
        }

        return resultVO;
        //return "list";

  

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值