软件编程
位置:首页>> 软件编程>> java编程>> 如何使用BeanUtils.copyProperties进行对象之间的属性赋值

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

作者:Terisadeng  发布时间:2023-10-17 19:01:40 

标签: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进行对象之间的属性赋值

来源:https://blog.csdn.net/dongyuxu342719/article/details/90242904

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com