写此工具类原因:
项目代码中 发现大量 使用BeanUtils.copyProperties(),需要先new 对象;
当list需要转化时,几乎处处是先声明new ArrayList<>(),再进行 遍历,再单个BeanUtils.copyProperties。
共同之处太多,索性直接抽出来,使用的时候不必new。直接调用即可。
BeanConverUtil.converList(sourceList,User.class)
BeanConverUtil.converList(sourceObj,User.class)
User.class替换成你需要转换的目标类即可。
/**
* 数据库查询 转换 对外接口展示类
*
*/
@Slf4j
public class BeanConverUtil {
/**
* 单个类转换
*
* @param sourceObj
* @param targetClass
* @param <T>
* @return
*/
public static <T> T conver(Object sourceObj, Class<T> targetClass) {
if (sourceObj == null || targetClass == null) {
return null;
}
T targetObj = null;
try {
targetObj = targetClass.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
log.error("sourceObj:{},targetClass:{}", sourceObj, targetClass, e);
return null;
}
BeanUtils.copyProperties(sourceObj, targetObj);
return targetObj;
}
/**
* List之间转换
*
* @param sourceList
* @param targetClass
* @param <T>
* @return
*/
public static <T> List<T> converList(List<?> sourceList, Class<T> targetClass) {
if (CollectionUtils.isEmpty(sourceList) || targetClass == null) {
return Collections.emptyList();
}
return sourceList.stream().map(sourceObj -> conver(sourceObj, targetClass)).collect(Collectors.toList());
}
}