zoukankan      html  css  js  c++  java
  • 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";
    

      

  • 相关阅读:
    洛谷 P4114 Qtree1
    洛谷 P2486 [SDOI2011]染色
    洛谷 P1505 [国家集训队]旅游
    洛谷 P4281 [AHOI2008]紧急集合 / 聚会
    C++中main函数的返回值一定要是int
    局部变量作为函数返回值
    sizeof和strlen在string类中的使用
    strlen 和 sizeof 的区别
    数据结构中的堆栈和内存中的堆栈问题
    数据类型的字长,字节问题
  • 原文地址:https://www.cnblogs.com/achengmu/p/9974639.html
Copyright © 2011-2022 走看看