首页 > 基础资料 博客日记
java中将一个实体类复制到另一个实体类的三种方法
2023-07-24 17:13:14基础资料围观884次
这篇文章介绍了java中将一个实体类复制到另一个实体类的三种方法,分享给大家做个参考,收藏Java资料网收获更多编程知识
这两天在做发票识别时,遇到一个问题,有一张发票表(假设为invoice_OCR_success)和一张我根据发票表新建的表(假设为invoice_OCR_fail),两张表有些字段名是相同的,有时需要把其中一张表的实例在另一张表里保存一份,此时就用到了实体类的复制,以下我将列出三种尝试的方法。
方式一:通过转换为JSONObject
InvoiceOCRSuccess kkjfInvoice1 = new InvoiceOCRSuccess();
JSONObject kkjfInvoiceOcrFail1 = JSONObject.parseObject(JSONObject.toJSONString(InvoiceOCRFail));
JSONObject kkjfInvoice2 = JSONObject.parseObject(JSONObject.toJSONString(kkjfInvoice1));
for (String key:kkjfInvoiceOcrFail1.keySet()){
if (kkjfInvoice2.containsKey(key)){
kkjfInvoice2.put(key,kkjfInvoiceOcrFail1.getString(key));
}
}
InvoiceOCRSuccesskkjfInvoice3 = JSONObject.toJavaObject(kkjfInvoice2, InvoiceOCRSuccess.class);
此时kkjfInvoiceOcrFail1 中有数据,新建一个kkjfInvoice1 ,想将kkjfInvoiceOcrFail1 中重复的字段存入kkjfInvoice1 。但这个方法不会生效,因为这里new的对象是个空对象,它在转为JSONObject 时变为了空,for循环赋值那一步并没有赋值成功,大家根据实际情况改造一下就好了。
方式二:通过Map方式赋值
BeanMap beanMap = BeanMap.create(InvoiceOCRSuccess);
BeanMap beanMap1 = BeanMap.create(InvoiceOCRFail);
Map<String,Object> map = new HashMap<>();
for (Object key:beanMap.keySet()){
String key1 = (String) key;
if (beanMap1.containsKey(key)){
map.put(key1,beanMap1.get(key));
}
}
JSONObject jsonObject1 = new JSONObject();
jsonObject1.putAll(map);
InvoiceOCRSuccess kkjfInvoice2 = jsonObject1.toJavaObject(InvoiceOCRSuccess.class);
这个BeanMap是org.springframework.cglib.beans包下的类,用于将实例转为map形式。用这种方法是要注意,这个BeanMap中自带的put方法是不起作用的,具体原因有兴趣可以自行查阅,找到了可以让我也看看,new HashMap<>()的目的就是为了解决这个问题。
方式三:BeanUtils.copyProperties( @NotNull Object source,@NotNull Object target) 强烈推荐!!!
该方法是spring项目BeanUtils工具自带的方法,非常的好用。第一个参数是你的源数据,第二个参数是你要复制的目标对象,然后就复制成功了,nice!
文章来源:https://blog.csdn.net/Bombradish/article/details/130879967
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- 曝华为"白嫖"开源团队技术方案事件——网友评论总结
- 洛谷-P7998 [WFOI - 01] 猜数 题解
- AI 相关概念之(基础层级):AI、ANI、AGI、ASI
- 深度解读 AEC-Q100 Rev-J:为什么先进制程芯片的 ESD 电压降低?车规标准“放水”了?
- 硅基流动 vs OpenRouter——两种AI Infra模式的取舍
- Vector 选型与实战:vs OTel / Logstash / Fluentd 全维对比,及统一日志与指标管道的 AWS ECS 落地
- "MixFormer: Co-Scaling Up Dense and Sequence in Industrial Recommenders" 论文笔记
- 开源分享|用MicroPython 做了个 AI 小鸡,它会长大,还记得我所有的情绪
- HEIC图片转换器(HEIC转JPG/PNG/WEBP/BMP/TIFF/ICO)
- 5 分钟上手 AgentRun:从注册到第一个 Agent 运行

