首页 > 编程语言 >Java工具类

Java工具类

时间:2022-11-24 11:47:26浏览次数:30  
标签:src Java oldPerson springframework beans org import 工具

BeanUtils.copyProperties排除null属性的copy

import com.hourumiyue.system.SpringUtil;
 
import org.springframework.beans.BeanUtils;
import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
 
import java.util.HashSet;
import java.util.Set;
 
public class TestBeanUtiles {
 
	public static String[] getNullPropertyNames (Object source) {
        final BeanWrapper src = new BeanWrapperImpl(source);
        java.beans.PropertyDescriptor[] pds = src.getPropertyDescriptors();
 
        Set<String> emptyNames = new HashSet<String>();
        for(java.beans.PropertyDescriptor pd : pds) {
            Object srcValue = src.getPropertyValue(pd.getName());
            if (srcValue == null) emptyNames.add(pd.getName());
        }
        String[] result = new String[emptyNames.size()];
        return emptyNames.toArray(result);
    }
 
	//封装同名称属性复制,但是空属性不复制过去
    public static void copyPropertiesIgnoreNull(Object src, Object target){
        BeanUtils.copyProperties(src, target, getNullPropertyNames(src));
    }
	
	public static void main(String[] args) {
        NewPerson newPerson = new NewPerson();
        newPerson.setName("miyue");//前台用户更新过的数据,例如前台只修改了用户名
        //下面我们假设是从数据库加载出来的老数据
        OldPerson oldPerson = new OldPerson();
        oldPerson.setSex("nv");
        oldPerson.setAge(5);
        //如果我们想把新数据更新到老数据这个对象里面,我们就可以借助BeanUtils.copyProperties()的方法如下:
        //BeanUtils.copyProperties(newPerson, oldPerson);
        copyPropertiesIgnoreNull(newPerson, oldPerson);
        System.out.println(newPerson.toString());
        System.out.println(oldPerson.toString());
    }
}

  

标签:src,Java,oldPerson,springframework,beans,org,import,工具
From: https://www.cnblogs.com/raorao1994/p/16921328.html

相关文章

  • Java对象拷贝原理剖析及最佳实践
    作者:宁海翔1前言对象拷贝,是我们在开发过程中,绕不开的过程,既存在于Po、Dto、Do、Vo各个表现层数据的转换,也存在于系统交互如序列化、反序列化。Java对象拷贝分为深拷贝......
  • java.lang.IllegalArgumentException: Invalid character found in the request targe
    摘要:文件下载时,出现如下异常信息:2020-08-2416:18:35:136ErrorparsingHTTPrequestheaderNote:furtheroccurrencesofHTTPrequestparsingerrorswillbelogged......
  • [第一篇]object c 和xcode开发工具撸代码初探吐槽
    开发工具吐槽开发工具似乎没有主动补全的快捷键.比如输入​​NSL​​手动把提示关闭了,没法再让它弹出勒(发现时按esc得,不知道能不能改...)开发工具似乎自动提示选中一个......
  • 易语言toJava 集合类
    易语言toJava集合类.版本2.程序集集合Map类,,公开,不允许键存在.程序集变量mContentValueMap,Map,,"0".程序集变量mSplit,文本型,,,&分割符.程序集变量mK......
  • [原创]借助gradle加快基于安卓开发工具开发ndk/jni编译速度
    我总是为了这个so的东西而苦逼,一直在想能不能再快一点,能不能,经过了几年的长跑,我再也忍受不了了,最近又调整优化了一下,1是因为模块化jni,导致so不会更新,因此我写了一个脚本,2......
  • 实用工具(锐捷云桌面篇)-Halo工具
    大家好,我是小杜。今日在学习的过程中又发现了一个云桌面好用的工具—“Halo工具”。Halo工具是集云主机体检、故障信息收集工具、故障排查案例集、极简部署等于......
  • 论文3 VScode&texlive&SumatraPDF打造完美书写论文工具
    文章目录​​介绍一下:​​​​一.软件下载安装​​​​1.1下载​​​​1.2安装编译器texlive2020​​​​1.3安装PDF阅读器​​​​1.4编辑器VScode​​​​a.直接百......
  • kali 子域名搜集工具学习记录
    #fierce 主要是对子域名进行扫描和收集信息,并且它还可以测试区域传送漏洞。 kali2022.1apt-get安装的fierce并没有-dns参数,需要手动下载,下载后有个fierce.pl......
  • 力扣81(java&python)-搜索旋转排序数组 II(中等)
    题目:已知存在一个按非降序排列的整数数组nums,数组中的值不必互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[......
  • ONVIF工具使用说明
       ONVIF工具使用说明作为视频安防领域的工作者,少不了和摄像头打交道,一般大部分厂商都支持ONVIF协议,所以还是有必要了解一下怎么使用ONVIF的官方工具。1、下载ONVI......