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

网友投稿 348 2022-12-07


如何使用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() {

returhttp://n "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);

}

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JDK&nbsp;&nbsp;keytool证书工具功能代码解析
下一篇:spring @Validated 注解开发中使用group分组校验的实现
相关文章

 发表评论

暂时没有评论,来抢沙发吧~