不同实体类相同属性之间的互相赋值

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Milogenius/article/details/88808819

在这里插入图片描述

在我们平时开发中,可能会涉及两个实体,它们之间有很多重复字段,那么如何将其中一个实体的信息赋值到另外一个实体?这就是我们今天要探讨的问题.

一.场景再现

类一:

package com.milogenius.bean;

/**
 * @Auther: Milogenius
 * @Date: 2019/3/25 22:06
 * @Description:
 */
public class Animal {
    private String name;
    private int age;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

类二:

package com.milogenius.bean;

/**
 * @Auther: Milogenius
 * @Date: 2019/3/25 22:06
 * @Description:
 */
public class Dog {
    private String name;
    private int age;
    private String type;

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

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

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }
}

观察上面两个类,我们发现,两个类有共同的字段nameage,接下来我们来看看如何赋值;

二.解决方案

package com.milogenius.bean;

import com.alibaba.fastjson.JSONObject;
import org.springframework.beans.BeanUtils;

/**
 * @Auther: Milogenius
 * @Date: 2019/3/25 22:11
 * @Description:
 */
public class AnimalTest {
    public static void main(String[] args) {
        Animal animal = new Animal();
        animal.setAge(8);
        animal.setName("球球");

        Dog dog = new Dog();

        System.out.println("dog赋值前:"+ JSONObject.toJSONString(dog));
        BeanUtils.copyProperties(animal,dog);
        System.out.println("dog赋值后:"+ JSONObject.toJSONString(dog));

    }
}

在这里插入图片描述
我们看到,通过spring提供的BeanUtils工具类中的copyProperties方法,我们成功实现了实体间的赋值操作.

三.总结

上面用到的工具类还有很多方法,这里就不一一介绍,有兴趣的小伙伴可以研究,反正以后遇到bean之间的操作,能想到有这个工具类就行,先到里面看看有没有适合自己,已经写好的方法就行.

猜你喜欢

转载自blog.csdn.net/Milogenius/article/details/88808819