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";
spring: beanutils.copyproperties将一个对象的数据塞入到另一个对象中(合并对象)的更多相关文章
- spring BeanUtils.copyProperties只拷贝不为null的属性
在MVC的开发模式中经常需要将model与pojo的数据绑定,apache和spring的工具包中都有BeanUtils,使用其中的copyProperties方法可以非常方便的进行这些工作,但在实际 ...
- 将对象的所有属性名放到一个数组中 || 获得对象的所有属性名 || return;不具有原子性 || 怎样自己制作异常|| 判断对象有没有某个属性 || 当传递的参数比需要的参数少的时候,没有的值会被赋予undefined || 获得函数实际传递的参数 || 怎么用函数处理一个对象 || 用一个名字空间定义一个模块所有的函数 || 给一个对象添加方法
获得对象的所有属性名 || 将对象o的所有属性名放到数组中 var o = {x:1,y:2,z:3}; var arr = []; var i = 0; for(arr[i++] in o){};/ ...
- LOB对象在数据泵导出、导入后查询对象数量发现丢失
问题描述:问题:源库的某个Schema使用数据泵Expdp元数据整体导出,在目标库导入且成功后,逻辑验证用户对象,发现缺失.分析查询后,缺失的对象,都是LOB类型(并不是所有的LOB都无法导入,是大部 ...
- python将对象写入文件,以及从文件中读取对象
原文地址: http://www.voidcn.com/article/p-fqtqpwxp-wo.html 写入文件代码: >>> import sys, shelve >& ...
- js 对象数组根据某个名称删除数组中的对象
delArrayItem: function (array,item) { const index = array.findIndex(text => text.name === item.na ...
- Spring、Commons的BeanUtils.copyProperties用法
如果两个对象A.B的大部分属性的名字都一样,此时想将A的属性值复制给B,一个一个属性GET\SET代码量太大,可以通过复制属性的方式减小工作量,同时代码看起来更加简洁明了,复制属性可以用Spring或 ...
- C# for循环或者foreach往List中添加对象的时候前面的数据总被最后加入的覆盖
昨天我旁边小姐姐遇到一个问题,就是在执行for循环往list添加数据的时候,前面的数据信息总是被后面的数据信息所覆盖. 这样编写就会造成这样的数据效果:(所有的数据都会被覆盖) 问题原因:对 ...
- java多线程与线程并发五:多个线程访问共享对象和数据的方式
本节的内容主要是对前面几节提到的线程间共享数据的方式做一个总结. 线程之间共享数据有以下几种方式: 1.如果每个线程执行的代码相同,可以使用同一个Runnable对象. 2.如果每个线程执行的代码不同 ...
- C++中的对象的赋值和复制
对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象.这里所指的对象的值是指对象中所有数据成员的值. 对象之间的赋值也是通过赋值 ...
随机推荐
- 在android下使用i2c tools
在android使用i2c tools访问i2c,很方便,可以在https://launchpad.net/ubuntu/+source/i2c-tools 下载最新的i2c tools. 把i2c- ...
- Codeforces Round #425 (Div. 2) Problem D Misha, Grisha and Underground (Codeforces 832D) - 树链剖分 - 树状数组
Misha and Grisha are funny boys, so they like to use new underground. The underground has n stations ...
- ListView与SimpleAdapter(三)
一般用于只有两个控件的列表. 使用SimpleAdapter 的数据是以List<Map<String,?>>形式封装数据, List的每一节对应ListView的每一行. H ...
- 本地git远程github
操作环境: windows系统 本地已安装git 步骤 1.右键进入git bash 2.进入本地仓库,如果有,则跳到步骤3.如果没有,则找到要作为仓库的文件夹,例如e://git//reposito ...
- UFS和EMMC的区别--原理学习【转】
本文转载自:https://blog.csdn.net/shenjin_s/article/details/79761425 UFS PK EMMC UFS作为目前安卓智能手机最先进的非易失存储器(N ...
- POJ 3250 Bad Hair Day【单调栈入门】
Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24112 Accepted: 8208 Des ...
- CF1131D tarjan,拓扑
题目链接 541div2 http://codeforces.com/contest/1131/problem/D 思路 给出n序列和m序列的相对大小关系 构造出最大值最小的序列 缩点+拓扑 小的向大 ...
- 【注册码】Matlab7.0(R14)注册码
Matlab 7 (R14) 注册码1:14-13299-56369-16360-32789-51027-35530-39910-50517-56079-43171-43696-14148-64597 ...
- 给大家分享两套WordPress收费主题
主题一:No.7 – 极简 by 大当家 1.主题网址:http://qzhai.net/2016-03-546.html 2.主题预览:http://qzhai.net/000/?theme=No. ...
- Java基础 【Math、Random、System、BigInteger、BigDecimal、Date、Calendar等常用类的使用】
学习的这几个类 是日常工作中经常要使用到的类 Math 类包含用于执行基本数序运算的方法,如初等指数.对数.平方根和 三角函数. 成员方法 1.public static int abs(int a ...