当前位置: 首页 > news >正文

java实体类全部复制到新类及部分复制到新类

类的复制一般用这个方法

BeanUtils.copyProperties(classA, classB);

A表示资源类,就是被复制的类

B表示目标类,就是最后的结果类

这个方法也有个弊端,就是只能把A中所有的数据都复制到B里去。值为null的也会复制过去。如果之前为null的数据已经编辑过,此时就不能覆盖。

当然可以依次判断,然后一个个导入,如果数据多,那得累死。废话少说,上代码

public static Object updateDto(Object source, Object target) {Field[] sources = source.getClass().getDeclaredFields(); // 获取类的属性数组for (int i = 0; i < sources.length; i++) {String fieldName = sources[i].getName();try {String firstLetter = fieldName.substring(0, 1).toUpperCase();String getter = "get" + firstLetter + fieldName.substring(1);// 原 class 的属性值Method method = source.getClass().getMethod(getter, new Class[]{});Object value = method.invoke(source, new Object[]{});// 此处加判断if (null != value){// 被赋值的 classClass c = target.getClass();// 获取该类的成员变量Field f = c.getDeclaredField(fieldName);// 取消语言访问检查f.setAccessible(true);// 给变量赋值f.set(target, value);}} catch (Exception e) {System.out.println(e.getMessage());}}return  target;
}

思路很简单,就是依次获取A类的属性和值,然后判断是否为空,不为空在替换。

相关文章:

  • 2024最新最全:【Windows10】u盘安装系列教程【附安装包】
  • 【笔记】Arrays.binarySearch()实践,以及需要注意的一些问题点
  • Python画图之HelloKitty
  • overflow溢出属性、定位、前端基础之JavaScript
  • 手写一个uniapp的步骤条组件
  • OSPF高级特性2(特殊区域,聚合)
  • 【Linux基础IO篇】系统文件接口(1)
  • 大厂面试题-TCP协议为什么要设计三次握手?
  • Python selenium驱动下载,模块安装以及基本使用
  • fastadmin笔记,关联查询,下拉框,关联下拉框查询,编辑时下拉框默认值
  • ArcGIS制作土地利用现状图
  • 第5天:基础入门-资产架构amp;端口amp;应用amp;CDNamp;WAFamp;站库分离amp;负载均衡
  • Fabric二进制建链(客户端与节点主机分离)
  • 【MATLAB源码-第65期】基于matlab的OFDM/OTFS通信系统性能对比,输处误码率曲线;对比是否采用LDPC编码。
  • 自动驾驶算法(三):RRT算法讲解与代码实现(基于采样的路径规划)
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • C学习-枚举(九)
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • scrapy学习之路4(itemloder的使用)
  • Vue实战(四)登录/注册页的实现
  • 闭包--闭包之tab栏切换(四)
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 那些被忽略的 JavaScript 数组方法细节
  • 巧用 TypeScript (一)
  • 山寨一个 Promise
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 思考 CSS 架构
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 一些关于Rust在2019年的思考
  • 用Canvas画一棵二叉树
  • 如何在招聘中考核.NET架构师
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • #QT(TCP网络编程-服务端)
  • (1)SpringCloud 整合Python
  • (1)虚拟机的安装与使用,linux系统安装
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (6)设计一个TimeMap
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)计算机毕业设计高校学生选课系统
  • (一)为什么要选择C++
  • (转)ABI是什么
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET中使用Redis (二)
  • @在php中起什么作用?
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [boost]使用boost::function和boost::bind产生的down机一例
  • [C/C++]关于C++11中的std::move和std::forward
  • [C++进阶篇]STL中vector的使用
  • [CareerCup] 14.5 Object Reflection 对象反射
  • [docker] Docker容器服务更新与发现之consul
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件