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++中的对象的赋值和复制
对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象.这里所指的对象的值是指对象中所有数据成员的值. 对象之间的赋值也是通过赋值 ...
随机推荐
- 在C#中使用OpenCV(使用OpenCVSharp)
在C#中使用OpenCV(使用OpenCVSharp) 1.什么是OpenCVSharp 为了解决在Csharp下编写OpenCV程序的问题,我做过比较深入的研究,并且实现了高效可用的方法 ...
- cJSON库的简单介绍及使用
转载:http://www.cnblogs.com/liunianshiwei/p/6087596.html JSON 语法是 JavaScript 对象表示法语法的子集.数据在键/值对中:数据由逗号 ...
- c和c++main函数的参数
1.代码 int main(int argc,char **argv[]) { ; } 2.分析 argc:代码参数个数 argv:二级指针,很多个字符串,这里代表参数列表 3.分析 这个代码最终被编 ...
- Android中activity的四个启动模式
activity的四个启动方式分别是standard.singletop.singletask.singleinstance.第一个其实就是只要新打开活动就会新建一个实例.第二个顾名思义返回栈的顶部只 ...
- eMMC ext4综述【转】
本文转载自:https://blog.csdn.net/lieye_leaves/article/details/78214410 eMMC ext4综述一.系统的引导启动1.1系统的引导启动http ...
- Oracle用户被锁定解决方法
解决方法: 1.用dba角色登陆:2.输入下面格式命令解锁: alter user 用户名 account unlock;3.如果密码忘记了,输入下面格式命令修改密码: alter user 用户名 ...
- ocacle sql: 两张表左连接 ,1对多,取一条数据,取按时间最新的
说明: MBGL_GZJH jh_id 对应 mbgl_gzjh_fkmx jh_id mbgl_gzjh_fkmx jh_id 有重复多条,但是 FKRQ 不一样,我们去 FKRQ 最新的一条. s ...
- C++笔记(2018/2/6)
引用 & 某个变量的引用,等价于这个变量,相当于该变量的一个别名. 定义引用时一定要将其初始化成引用某个变量. 初始化后,它就一直引用该变量,不会再引用别的变量了. 通过引用所做的读写操作,会 ...
- 【使用指南】WijmoJS 前端开发工具包
为方便广大前端开发人员更好的使用 WijmoJS 前端开发工具包,葡萄城专门推出了 WijmoJS 使用指南,该指南详细地介绍了如何把 WijmoJS 各种强大的功能应用到您自己的 Web 项目中,助 ...
- SAP S/4 HANA
通常说到SAP,指的都是SAP Business Suite/R3(ECC) 这款产品. 那么SAP S/4 HANA与SAP R3究竟有什么不同呢? 简单地说,S/4 HANA是下一代的R/3和SA ...