Spring中使用copyProperties方法进行对象之间的属性赋值详解

 更新时间:2023年12月14日 09:26:48   作者:Terisadeng  
这篇文章主要介绍了Spring中使用copyProperties方法进行对象之间的属性赋值详解,使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值,需要的朋友可以参考下

copyProperties进行对象之间的属性赋值

1、使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值

/**
     * 对象属性拷贝 <br>
     * 将源对象的属性拷贝到目标对象
     *
     * @param source 源对象
     * @param target 目标对象
     */
    public static void copyProperties(Object source, Object target) {
        try {
            BeanUtils.copyProperties(source, target);
        } catch (BeansException e) {
            LOGGER.error("BeanUtil property copy  failed :BeansException", e);
        } catch (Exception e) {
            LOGGER.error("BeanUtil property copy failed:Exception", e);
        }
    }

2、List集合之间的对象属性赋值

/**
     * @param input 输入集合
     * @param clzz  输出集合类型
     * @param <E>   输入集合类型
     * @param <T>   输出集合类型
     * @return 返回集合
     */
    public static <E, T> List<T> convertList2List(List<E> input, Class<T> clzz) {
        List<T> output = Lists.newArrayList();
        if (CollectionUtils.isNotEmpty(input)) {
            for (E source : input) {
                T target = BeanUtils.instantiate(clzz);
                BeanUtil.copyProperties(source, target);
                output.add(target);
            }
        }
        return output;
    }

比如有两个类,User和Employee,将存储Employee对象的List赋给存储User对象的List。

User类:

public class User {
    private String name;
    private Integer age;
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
 
    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

Employee类:

public class Employee {
    private String name;
 
    private Integer age;
    private String dept;
 
    public Employee(String name, Integer age, String dept) {
        this.name = name;
        this.age = age;
        this.dept = dept;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public Integer getAge() {
        return age;
    }
 
    public void setAge(Integer age) {
        this.age = age;
    }
 
    public String getDept() {
        return dept;
    }
 
    public void setDept(String dept) {
        this.dept = dept;
    }
 
    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", dept='" + dept + '\'' +
                '}';
    }
}

测试类:

@RunWith(PowerMockRunner.class)
public class TestUtil
{
    @Test
    public void test(){
        Employee ee1=new Employee("A",21,"it");
        Employee ee2=new Employee("B",23,"account");
        User user=new User();
        BeanUtil.copyProperties(ee1, user);
        System.out.println(user);
        System.out.println("-------------分割线--------------");
        List<User> output=new ArrayList<>();
        List<Employee> source= Arrays.asList(ee1,ee2);
        output=BeanUtil.convertList2List(source,User.class);
        for (User str:output) {
            System.out.println(str);
        }
    }
}

到此这篇关于Spring中使用copyProperties方法进行对象之间的属性赋值详解的文章就介绍到这了,更多相关copyProperties进行对象之间的属性赋值内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解SpringBoot如何自定义启动画面

    详解SpringBoot如何自定义启动画面

    当我们在启动SpringBoot项目时候会在控制台上看到一些单调的图案,有些朋友觉得这些图案很单调,那我们是否可以自定义启动画面呢,接下来小编就给大家介绍一下SpringBoot是如何实现自定义启动画面,感兴趣的同学跟着小编一起来看看吧
    2023-07-07
  • Java8 如何移除两个相同的List对象

    Java8 如何移除两个相同的List对象

    这篇文章主要介绍了Java8 如何移除两个相同的List对象,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java求字符串长度的方法举例

    Java求字符串长度的方法举例

    这篇文章主要给大家介绍了关于Java求字符串长度的相关资料,Java中的字符串是一种常见的数据类型,用于表示文本数据,文中给出了详细的代码实例,需要的朋友可以参考下
    2023-10-10
  • Spring中propagation的7种事务配置及说明

    Spring中propagation的7种事务配置及说明

    这篇文章主要介绍了Spring中propagation的7种事务配置及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java如何计算两个时间段内的工作日天数

    Java如何计算两个时间段内的工作日天数

    这篇文章主要介绍了Java如何计算两个时间段内的工作日天数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • 通过xml配置SpringMVC注解DispatcherServlet初始化过程解析

    通过xml配置SpringMVC注解DispatcherServlet初始化过程解析

    这篇文章主要为大家介绍了通过xml配置SpringMVC注解DispatcherServlet初始化过程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • java局域网聊天小程序

    java局域网聊天小程序

    这篇文章主要为大家详细介绍了java局域网聊天小程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • SpringBoot集成POI导出Execl表格之统一工具类

    SpringBoot集成POI导出Execl表格之统一工具类

    这篇文章主要为大家详细介绍了SpringBoot集成POI导出Execl表格之统一工具类,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • Java中Collection集合常用API之 Collection存储自定义类型对象的示例代码

    Java中Collection集合常用API之 Collection存储自定义类型对象的示例代码

    Collection是单列集合的祖宗接口,因此它的功能是全部单列集合都可以继承使用的,这篇文章主要介绍了Java中Collection集合常用API - Collection存储自定义类型对象,需要的朋友可以参考下
    2022-12-12
  • java实现五子棋大战

    java实现五子棋大战

    这篇文章主要为大家详细介绍了java实现五子棋大战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03

最新评论