Java对象间属性值的复制-Spring的BeanUtil

来源:互联网 发布:网络流量分析软件 编辑:程序博客网 时间:2024/05/18 17:45

需求:两个对象中有相同类型相同名称的属性,把一个对象中的属性值复制到另一个对象。

先把spring那5个核心的jar包导入到项目中
spring-core-3.2.0.RELEASE.jar
spring-beans-3.2.0.RELEASE.jar
spring-context-3.2.0.RELEASE.jar
spring-expression-3.2.0.RELEASE.jar

新建一个Person类

public class Person {    private Double avgScore;    private String courseName;    private int num;    private Date createTime;    public Double getAvgScore() {        return avgScore;    }    public void setAvgScore(Double avgScore) {        this.avgScore = avgScore;    }    public String getCourseName() {        return courseName;    }    public void setCourseName(String courseName) {        this.courseName = courseName;    }    public int getNum() {        return num;    }    public void setNum(int num) {        this.num = num;    }    public Date getCreateTime() {        return createTime;    }    public void setCreateTime(Date createTime) {        this.createTime = createTime;    }    @Override    public String toString() {        return "Person [avgScore=" + avgScore + ", courseName=" + courseName                + ", num=" + num + ", createTime=" + createTime + "]";    }}

新建一个Student类

public class Student extends Person{    private String studentName;    public String getStudentName() {        return studentName;    }    public void setStudentName(String studentName) {        this.studentName = studentName;    }    @Override    public String toString() {        return "Student [studentName=" + studentName + ", getAvgScore()="                + getAvgScore() + ", getCourseName()=" + getCourseName()                + ", getNum()=" + getNum() + ", getCreateTime()="                + getCreateTime() + ", toString()=" + super.toString()                + ", getClass()=" + getClass() + ", hashCode()=" + hashCode()                + "]";    }}

编写一个测试类

public class Test {    @Test    public void test(){        Person p=new Person();        p.setAvgScore(3.0);        p.setCourseName("courseName");        p.setCreateTime(new Date());        p.setNum(2);        Student s=new Student();        s.setStudentName("studentName");        BeanUtils.copyProperties(p, s);        System.out.println(p);        System.out.println("-------------------");        System.out.println(s);    }}

运行结果为

Person [avgScore=3.0, courseName=courseName, num=2, createTime=Wed Aug 30 08:41:56 CST 2017]-------------------Student [studentName=studentName, getAvgScore()=3.0, getCourseName()=courseName, getNum()=2, getCreateTime()=Wed Aug 30 08:41:56 CST 2017, toString()=Person [avgScore=3.0, courseName=courseName, num=2, createTime=Wed Aug 30 08:41:56 CST 2017], getClass()=class cn.eaglezsx.test.Student, hashCode()=5784348]

可以看到Person对象中的属性值复制到了Student中

需求:将一个list中对象的属性值复制到另一个list中

    @Test    public void t2(){        List<Person> pL=new ArrayList<>();        Person p=new Person();        p.setAvgScore(3.0);        p.setCourseName("courseName");        p.setCreateTime(new Date());        p.setNum(2);        Person p2=new Person();        p2.setAvgScore(4.0);        pL.add(p);        pL.add(p2);        List<Student> sL=new ArrayList<>();        for(Person person:pL){            Student student=new Student();            BeanUtils.copyProperties(person, student);            sL.add(student);        }        System.out.println(pL);        System.out.println("-----------------------");        System.out.println(sL);    }

运行结果为

[Person [avgScore=3.0, courseName=courseName, num=2, createTime=Wed Aug 30 08:48:49 CST 2017], Person [avgScore=4.0, courseName=null, num=0, createTime=null]]-----------------------[Student [studentName=null, getAvgScore()=3.0, getCourseName()=courseName, getNum()=2, getCreateTime()=Wed Aug 30 08:48:49 CST 2017, toString()=Person [avgScore=3.0, courseName=courseName, num=2, createTime=Wed Aug 30 08:48:49 CST 2017], getClass()=class cn.eaglezsx.test.Student, hashCode()=32846040], Student [studentName=null, getAvgScore()=4.0, getCourseName()=null, getNum()=0, getCreateTime()=null, toString()=Person [avgScore=4.0, courseName=null, num=0, createTime=null], getClass()=class cn.eaglezsx.test.Student, hashCode()=5890565]]

可以看到pL总对象的值复制到了sL中了。

原创粉丝点击