網站首頁 編程語言 正文
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-03-26 C語言中指針常量和常量指針的區別_C 語言
- 2022-04-23 C語言字符函數isalnum()和iscntrl()詳解_C 語言
- 2024-03-22 springboot報錯Error creating bean with name ‘dataSou
- 2022-05-07 如何在Python中進行異常處理_python
- 2023-01-14 GoLang內存模型詳細講解_Golang
- 2022-10-14 nginx 反向代理以及 location /admin/
- 2022-06-10 python?PIL?Image?圖像處理基本操作實例_python
- 2023-01-19 C++深度探索虛函數指針示例_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同步修改后的遠程分支