首页 > 其他分享 >参考示例之“复制对象|拷贝对象|BeanUtils工具类学习”

参考示例之“复制对象|拷贝对象|BeanUtils工具类学习”

时间:2023-08-05 12:11:33浏览次数:34  
标签:src 示例 对象 BeanUtils copyProperties 拷贝 targetSet

// 设置需要拷贝的字段   
Set<String> targetSet = new HashSet<>();
        targetSet.addAll(Arrays
                .asList("totalRefund", "actualAdvertisingCost", "expensesOfTaxation"));
// 调用拷贝方法
        copyProperties(combinationIncomeCosts.get(0), resultBeneficiary, targetSet);

 

将A对象的所有数据拷贝到B对象中

前提:保证两个对象的字段相同,B对象可以比A对象多字段

package org.springframework.beans;
BeanUtils.copyProperties(A, B);

 

 

将A对象的部分值数据拷贝到B对象中

这里可以调用方案,排除掉部分不需要的字段

import org.springframework.beans.BeanUtils;

BeanUtils.copyProperties(A, B, 排除的字段[可以数组,列表等]);

 

还可以优化,只要某些字段

// 设置需要拷贝的字段
Set<String> targetSet = new HashSet<>(); targetSet.addAll(Arrays.asList("totalRefund", "actualAdvertising", "expenses", "compensate"));
// 调用自定义拷贝方案 copyProperties(A, B, targetSet);
  /**
     * 赋值指定字段值
     *
     * @param src
     * @param target
     * @param fieldSet
     */
    public static void copyProperties(Object src, Object target, Set<String> fieldSet)
    {
     // 过滤出所有不要的字段 String[] filteredPropertyNames = Arrays.stream(BeanUtils.getPropertyDescriptors(src.getClass())) .map(PropertyDescriptor::getName).filter(e -> !fieldSet.contains(e)).toArray(String[]::new);
     // 实际上还是调用了排除的方案,将不要的字段加入到排除中 BeanUtils.copyProperties(src, target, filteredPropertyNames); }

 

标签:src,示例,对象,BeanUtils,copyProperties,拷贝,targetSet
From: https://www.cnblogs.com/saoge/p/17607749.html

相关文章

  • 第十六节 面向对象进阶(多态&包&final&权限修饰符&代码块)
    今日内容多态包final权限修饰符代码块教学目标能够说出使用多态的前提条件理解多态的向上转型理解多态的向下转型能够知道多态的使用场景包的作用public和private权限修饰符的作用描述final修饰的类的特点描述final修饰的方法的特点......
  • 《深入理解Java虚拟机》读书笔记:HotSpot虚拟机对象探秘
    基于实用优先的原则,以常用的虚拟机HotSpot和常用的内存区域Java堆为例,深入探讨HotSpot虚拟机在Java堆中对象分配、布局和访问的全过程。以下是本节内容的脑图。 HotSpot虚拟机对象探秘脑图 一、对象的创建创建对象大致分为5步:1.检查类是否加载,没有加载先加载类2.分配内......
  • 关于Python的学习记录(二十一_对象的序列化和反序列化)
    JSON概述在Python中,我们可以将程序中的数据以JSON格式进行保存。JSON是“JavaScriptObjectNotation”的缩写,它本来是JavaScript语言中创建对象的一种字面量语法,现在已经被广泛的应用于跨语言跨平台的数据交换。使用JSON的原因非常简单,因为它结构紧凑而且是纯文本,任何操......
  • 使用Locust进行接口性能测试:安装、命令参数解析与示例解读(一)
    “Locust是一款开源的Python性能测试工具,它可以模拟大量并发用户对网站或者其他接口进行压力测试”一、Locust简介与安装1.使用pip安装Locust:pip3installlocust2.通过GitHub克隆项目并安装(推荐Python3):gitclonehttps://github.com/locustio/locustcdlocustpython......
  • html滚动示例
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>滚动测试</title><scriptsrc="https://code.jquery.com/jquery-3.7.0.min.js"crossorigin="anonymous"......
  • NET7下的WEB API示例
    NET7下的WEBAPI示例 [Route("api/[controller]")][ApiController]publicclassShopADController:ControllerBase{privatereadonlyIRepository<Model.ShopAD,int>_shopAD;publicShopADController(IRepository&l......
  • 14-面向对象-构造方法(构造器)
    构造方法/构造器构造方法又叫构造器(constructor),是类的一种特殊的方法,它的主要作用是完成对新对象的初始化。基本语法修饰符方法名(形参列表){     方法体;}a)构造器的修饰符可以是默认的,也可以是public、protected、privateb)构造方法没有返回值c)方法名......
  • 【Azure K8S | AKS】在AKS集群中创建 PVC(PersistentVolumeClaim)和 PV(PersistentVol
    问题描述在AKS集群中创建PVC(PersistentVolumeClaim)和PV(PersistentVolume)示例 问题解答在AzureKubernetesService(AKS)的官方网站中,关于存储的选项介绍中,并没有具体的yaml实例来创建PV,PVC。特别是使用自定义的Disk的情况。本文将根据以上图片中的AzureManagedDisk+......
  • 网络工具示例
    如指定IP包长度大于100:tcpdump-ieth0-n'ip[2:2]>100'traceroute使用oot@zh-hz-hr-ygyradius~]#traceroute-I-p2000192.168.1.1tracerouteto192.168.1.1(192.168.1.1),30hopsmax,60bytepackets1gateway(192.168.3.250)3.987ms4.331......
  • 【设计模式】享元模式Flyweight:通过共享对象减少内存加载消耗
    (目录)享元模式Flyweight:通过共享对象减少内存加载消耗享元模式的用意享元模式以共享的⽅法⾼效地⽀持⼤量的细粒度对象,享元对象能做到共享的关键是区分内蕴状态和外蕴状态。⼀个内蕴状态是存储在享元对象内部的,并且是不会随环境改变⽽有所不同的,因此⼀个享元可以具有内蕴状态......