如何使用BeanUtils.copyProperties进行对象之间的属性赋值

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

/**
  * 对象属性拷贝 
* 将源对象的属性拷贝到目标对象 * * @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  输入集合类型
  * @param  输出集合类型
  * @return 返回集合
  */
 public static  List convertList2List(List input, Class clzz) {
  List 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 output=new ArrayList<>();
  List source= Arrays.asList(ee1,ee2);
  output=BeanUtil.convertList2List(source,User.class);
  for (User str:output) {
   System.out.println(str);
  }
 }
}

如何使用BeanUtils.copyProperties进行对象之间的属性赋值_第1张图片

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

你可能感兴趣的:(如何使用BeanUtils.copyProperties进行对象之间的属性赋值)