Java Bean属性拷贝 API

2021-07-30 11:35:57 浏览数 (2)

简介

Java中JavaBean对象之间的拷贝通常是用get/set方法,但如果你有两个属性相同的JavaBean或有大部分属性相同的JavaBean,对于这种情况,可以采用以下几个简便方法处理。

代码语言:javascript复制
.使用org.apache.commons.beanutils.BeanUtils.copyProperties
.使用org.springframework.beans.BeanUtils.copyProperties
.使用net.sf.cglib.beans.BeanCopier.copy
.使用org.springframework.cglib.beans.BeanCopier.copy
.使用mirror mirror.setValue
.使用自写反射
.使用json序列化

BeanUtils

BeanUtils.copyProperties通过java反射将类中当前属性字段对应的内容复制到另外一个类中。

代码语言:javascript复制
@Data
public class Book {
    private String username;
    private String password;
    private String email;
}

public class Book2 {
    private String username;
    private String password;
    private String email;
}

public static void main(String[] args) {
    Book book = new Book();
    book.setEmail("abc@163.com");
    book.setPassword("123456");
    book.setUsername("happygiraffe");
    
    Book2 book2 = new Book2();
    
    //添加了忽略username属性的赋值
    BeanUtils.copyProperties(book, book2, "username");

    System.out.println(book.toString());
    System.out.println(book2.toString());
}

输出:
Book{username='happygiraffe', password='123456', email='abc@163.com'}
Book2{username='null', password='123456', email='abc@163.com'}    

PropertyUtils

使用PropertyUtils.copyProperties()拷贝一个bean中的属性到另一个bean中,第一个参数是目标bean,第二个参数是源bean。

代码语言:javascript复制
Book srcBook = new Book();  
srcBook.setName("爱你是我的错");  
      
Novel novel= new Novel();//小说具有书的属性。  
      
PropertyUtils.copyProperties(novel, srcBook);  

输出:
System.out.println(novel.getName());  

0 人点赞