使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」

使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」1、使用org.springframework.beans.BeanUtils.copyProperties方法进行对象之间属性的赋值,避免通过get、set方法一个一个属性的赋值/***对象属性拷贝<br>*将源对象的属性拷贝到目标对象**@paramsource源对象*@paramtarget目标对…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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);
        }
    }
}

使用BeanUtils.copyProperties进行对象之间的属性赋值「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186126.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Winform屏幕截图保存C#代码

    代码如下:已在项目中实现:http://hovertree.com/h/bjaf/76q5yeli.htm

    2021年12月21日
    39
  • 关于记忆化搜索

    关于记忆化搜索转载自:http://blog.csdn.net/urecvbnkuhbh_54245df/article/details/5847876记忆化搜索: 算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动

    2022年7月26日
    9
  • 伽马校正算法_伽马设定

    伽马校正算法_伽马设定写在前面我相信几乎所有做图像处理方面的人都听过伽马校正(GammaCorrection)这一个名词,但真正明白它是什么、为什么要有它、以及怎么用它的人其实不多。我也不例外。最初我查过一些资料,但很多文章的说法都不一样,有些很晦涩难懂。直到我最近在看《RealTimeRendering,3rdEdition》这本书的时候,才开始慢慢对它有所理解。本人才疏学浅,写的这篇文章很

    2022年9月25日
    3
  • python数组_js数组添加数据

    python数组_js数组添加数据记linuxshell的两个小技巧:shell数组和字符串判断最近在使用shell写脚本的时候,想实现python中两个很简单的功能:1:判断一个字符串是否包含另一个字符串。2:怎么用实现python的列表功能。这里跟大家分享一下。1:判断一个字符串是否包含另一个字符串:123456string=”abcdefg”…文章余二五2017-11-151010浏览量Python数据类型Python…

    2022年8月13日
    3
  • 一个高效快捷的排序方法

    一个高效快捷的排序方法

    2021年9月27日
    54
  • Navicat连接sqlserver 2012踩坑

    Navicat连接sqlserver 2012踩坑Navicat连接sqlserver2012踩坑解决问题的办法来自于两个博客(搬运、记录)(1)[配置远账号和登录方式](https://blog.csdn.net/weixin_42241984/article/details/105432253)这里主要是账户的状态要注意2.[配置TCP的动态端口为1433]3.要注意的是在服务器里查看以下三个进程是否已经启动(除了sqlserveragent),以及修改后重启服务。…

    2022年8月30日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号