1. 程式人生 > 程式設計 >如何使用BeanUtils.copyProperties進行物件之間的屬性賦值

如何使用BeanUtils.copyProperties進行物件之間的屬性賦值

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進行物件之間的屬性賦值

到此這篇關於使用BeanUtils.copyProperties進行物件之間的屬性賦值的文章就介紹到這了,更多相關BeanUtils.copyProperties物件賦值內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!