如何使用BeanUtils.copyProperties進行對象之間的屬性賦值
1、使用org.springframework.beans.BeanUtils.copyProperties方法進行對象之間屬性的賦值,避免通過get、set方法一個一個屬性的賦值
/**
* 對象屬性拷貝 <br>
* 將源對象的屬性拷貝到目標(biāo)對象
*
* @param source 源對象
* @param target 目標(biāo)對象
*/
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);
}
}
}

到此這篇關(guān)于使用BeanUtils.copyProperties進行對象之間的屬性賦值的文章就介紹到這了,更多相關(guān)BeanUtils.copyProperties對象賦值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot如何取消內(nèi)置Tomcat啟動并改用外接Tomcat
這篇文章主要介紹了SpringBoot如何取消內(nèi)置Tomcat啟動并改用外接Tomcat,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-11-11
Springcloud Stream消息驅(qū)動工具使用介紹
SpringCloud Stream由一個中間件中立的核組成,應(yīng)用通過SpringCloud Stream插入的input(相當(dāng)于消費者consumer,它是從隊列中接收消息的)和output(相當(dāng)于生產(chǎn)者producer,它是發(fā)送消息到隊列中的)通道與外界交流2022-09-09
Java synchronized線程交替運行實現(xiàn)過程詳解
這篇文章主要介紹了Java synchronized線程交替運行實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11

