網站首頁 編程語言 正文
BeanUtils工具類轉換
在日常開發中經常會遇到對象轉換,最常用的對象轉換工具就是BeanUtils,也就是使用BeanUtils.copyProperties(Object source, Object target)方法進行轉換。為了使用更方便,因為對BeanUtils進行一個簡單的封裝,實現BeanUtils對泛型的轉換。這里封裝了一個叫ConvertUtils的類,代碼如下:
/**
* @Author: Greyfus
* @Create: 2022-05-11 10:25
* @Version:
* @Description:
*/
package vgc.itp.rtm.sop.pojo.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class ConvertUtils {
private static Logger LOG = LoggerFactory.getLogger(ConvertUtils.class);
private ConvertUtils() {
}
public static <S, T> T convert(S sourceObject, Class<T> targetClass) {
if (Objects.isNull(sourceObject)) {
return null;
}
T targetObject = null;
try {
targetObject = targetClass.newInstance();
} catch (Exception e) {
LOG.error("object convert error : {}", e.getMessage());
}
BeanUtils.copyProperties(sourceObject, targetObject);
return targetObject;
}
public static <S, T> ArrayList<T> convertList(List<S> sourceList,Class<T> targetClass) {
if (CollectionUtils.isEmpty(sourceList)) {
return null;
}
ArrayList<T> targetList = new ArrayList<>();
for (int index = 0; index < sourceList.size(); index++) {
T targetObject = null;
try {
targetObject = targetClass.newInstance();
} catch (Exception e) {
LOG.error("object convert error : {}", e.getMessage());
}
BeanUtils.copyProperties(sourceList.get(index),targetObject);
targetList.add(targetObject);
}
return targetList;
}
}
ConvertUtils類實現對單個對象和List的轉換。使用也非常簡單,比如有一個Model對象需要轉換為VehicleModel對象,那么只需要
ConvertUtils.convertList(model, VehicleModel.class);//即可實現model對象轉換為VehicleModel
對于List的轉換也是如此,只需要調用ConvertUtils.convertList()方法即可,比如將一個l類型為List的 vehileList轉為List類型的對象,只需要
ConvertUtils.convertList(vehileList, SopVhicle.class);
之前一直在找直接將整個List對象轉換的方法,但是BeanUtils.copyProperties并支持整個List對象的轉換,所以只能遍歷List,單個轉換。
原文鏈接:https://blog.csdn.net/qq_43600166/article/details/125055077
相關推薦
- 2022-05-04 python工具dtreeviz決策樹可視化和模型可解釋性_python
- 2022-03-22 C++抽象數據類型介紹_C 語言
- 2023-05-10 Pandas數據分析多文件批次聚合處理實例解析_python
- 2023-06-17 Flask中特殊裝飾器的使用_python
- 2022-12-19 批處理bat腳本獲取打包發布問題記錄_DOS/BAT
- 2024-01-15 Stream流 - 獲取Stream和轉換操作(含基本數據類型流)
- 2022-10-11 app:transformClassesAndResourcesWithProguardForRel
- 2022-10-23 C++進程的創建和進程ID標識詳細介紹_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支