关与BeanUtils赋值的问题

2023-09-13 09:08:19
```javapackage com.ihrm.system.utils;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;publicclassSpringUtilimplementsApplicationContextAware{/**
     * 当前IOC
     *
     */privatestatic ApplicationContext applicationContext;/**
     * * 设置当前上下文环境,此方法由spring自动装配
     *
     */
    @OverridepublicvoidsetApplicationContext(ApplicationContext arg0)
            throws BeansException{
        applicationContext= arg0;}/**
     * 从当前IOC获取bean
     *
     * @param id
     * bean的id
     * @return
     *
     */publicstatic ObjectgetObject(String id){
        Object object=null;
        object= applicationContext.getBean(id);return object;}publicstatic String[]getNullPropertyNames(Object source){
        final BeanWrapper src=newBeanWrapperImpl(source);
        java.beans.PropertyDescriptor[] pds= src.getPropertyDescriptors();

        Set<String> emptyNames=newHashSet<String>();for(java.beans.PropertyDescriptor pd: pds){
            Object srcValue= src.getPropertyValue(pd.getName());if(srcValue==null) emptyNames.add(pd.getName());}
        String[] result=newString[emptyNames.size()];return emptyNames.toArray(result);}publicstaticvoidcopyPropertiesIgnoreNull(Object src, Object target){
        BeanUtils.copyProperties(src, target,getNullPropertyNames(src));}}

忘了从哪个博主抄来的了,挺好用反正


测试实体

```java
package com.ihrm.system.utils;

public class aa {

    private String name;
    private String age;


    public aa() {
    }

    public aa(String name, String age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "aa{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                '}';
    }
}
package com.ihrm.system.utils;publicclasstest{publicstaticvoidmain(String[] args){




        aa news=newaa();
        news.setName("1");
        news.setAge("2");
        aa old=newaa();
        old.setName("2");
        old.setAge("3");

        SpringUtil.copyPropertiesIgnoreNull(news, old);
        System.out.println(news.toString());
        System.out.println(old.toString());}}

自己运行就行看出效果了

  • 作者:@小潘同学
  • 原文链接:https://blog.csdn.net/qq_41440558/article/details/109062480
    更新时间:2023-09-13 09:08:19