Spring中使用copyProperties方法進(jìn)行對(duì)象之間的屬性賦值詳解
copyProperties進(jìn)行對(duì)象之間的屬性賦值
1、使用org.springframework.beans.BeanUtils.copyProperties方法進(jìn)行對(duì)象之間屬性的賦值,避免通過(guò)get、set方法一個(gè)一個(gè)屬性的賦值
/**
* 對(duì)象屬性拷貝 <br>
* 將源對(duì)象的屬性拷貝到目標(biāo)對(duì)象
*
* @param source 源對(duì)象
* @param target 目標(biāo)對(duì)象
*/
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集合之間的對(duì)象屬性賦值
/**
* @param input 輸入集合
* @param clzz 輸出集合類(lèi)型
* @param <E> 輸入集合類(lèi)型
* @param <T> 輸出集合類(lèi)型
* @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;
}比如有兩個(gè)類(lèi),User和Employee,將存儲(chǔ)Employee對(duì)象的List賦給存儲(chǔ)User對(duì)象的List。
User類(lèi):
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類(lèi):
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 + '\'' +
'}';
}
}測(cè)試類(lèi):
@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("-------------分割線(xiàn)--------------");
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)行對(duì)象之間的屬性賦值詳解的文章就介紹到這了,更多相關(guān)copyProperties進(jìn)行對(duì)象之間的屬性賦值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Maven版本管理之SNAPSHOT,Release與Nexus倉(cāng)庫(kù)的區(qū)別和影響詳解
在?Java?Maven?項(xiàng)目中,我們經(jīng)常會(huì)看到不同形式的版本號(hào),這些版本號(hào)看起來(lái)差別不大,但在?Maven?構(gòu)建、依賴(lài)管理和生產(chǎn)環(huán)境穩(wěn)定性方面,影響非常明顯,下面小編就和大家詳細(xì)講解一下吧2026-05-05
Java不用算數(shù)運(yùn)算符來(lái)實(shí)現(xiàn)求和方法
我們都知道,Java的運(yùn)算符除了具有優(yōu)先級(jí)之外,還有一個(gè)結(jié)合性的特點(diǎn)。當(dāng)一個(gè)表達(dá)式中出現(xiàn)多種運(yùn)算符時(shí),執(zhí)行的先后順序不僅要遵守運(yùn)算符優(yōu)先級(jí)別的規(guī)定,還要受運(yùn)算符結(jié)合性的約束,以便確定是自左向右進(jìn)行運(yùn)算還是自右向左進(jìn)行運(yùn)算,但是如果不用運(yùn)算符怎么求和呢2022-04-04
Java8中常見(jiàn)函數(shù)式接口的使用示例詳解
在 Java 8 中,函數(shù)式接口是一個(gè)關(guān)鍵的特性,它們?cè)试S將方法作為參數(shù)傳遞或返回類(lèi)型,本文為大家整理了一些常見(jiàn)的函數(shù)式接口的使用,希望對(duì)大家有所幫助2023-12-12
Java使用重入鎖實(shí)現(xiàn)線(xiàn)程同步的示例代碼
在多線(xiàn)程環(huán)境中,為保證對(duì)共享資源的安全訪問(wèn),常用的同步手段是 synchronized 關(guān)鍵字,但 synchronized 存在局限,本項(xiàng)目旨在通過(guò)示例演示如何使用 ReentrantLock 實(shí)現(xiàn)線(xiàn)程同步,替代 synchronized,并展示其高級(jí)功能,需要的朋友可以參考下2025-07-07
SpringCloud-Gateway轉(zhuǎn)發(fā)WebSocket失敗問(wèn)題及解決
這篇文章主要介紹了SpringCloud-Gateway轉(zhuǎn)發(fā)WebSocket失敗問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
jmeter中json提取器如何提取多個(gè)參數(shù)值
關(guān)于jmeter中的正則表達(dá)式及json提取器可以提取響應(yīng)值,但是實(shí)際可以需要上個(gè)接口的多個(gè)響應(yīng)值,本文就詳細(xì)的介紹一下如何使用,感興趣的可以了解一下2021-11-11

