Spring中使用copyProperties方法進(jìn)行對象之間的屬性賦值詳解
copyProperties進(jìn)行對象之間的屬性賦值
1、使用org.springframework.beans.BeanUtils.copyProperties方法進(jìn)行對象之間屬性的賦值,避免通過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)于Spring中使用copyProperties方法進(jìn)行對象之間的屬性賦值詳解的文章就介紹到這了,更多相關(guān)copyProperties進(jìn)行對象之間的屬性賦值內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Maven版本管理之SNAPSHOT,Release與Nexus倉庫的區(qū)別和影響詳解
在?Java?Maven?項目中,我們經(jīng)常會看到不同形式的版本號,這些版本號看起來差別不大,但在?Maven?構(gòu)建、依賴管理和生產(chǎn)環(huán)境穩(wěn)定性方面,影響非常明顯,下面小編就和大家詳細(xì)講解一下吧2026-05-05
SpringCloud-Gateway轉(zhuǎn)發(fā)WebSocket失敗問題及解決
這篇文章主要介紹了SpringCloud-Gateway轉(zhuǎn)發(fā)WebSocket失敗問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09

