背景:项目分层很细,甚至有些繁琐和性能浪费。数据库查出来的do对象集合 基本不做任何操作,就要转换成为bo对象返回到前端或者调用方。
所以代码各处角落就分布着。。。
doList.stream.map( do -> Bo bo = new Bo(); BeanUtls.copyProperties(do ,bo); return bo}).colloect(toList());
或者是 for循环 赋值。。。 没有其他操作。。 这个就很难受了。。
干脆写了一个泛型方法。 记录一下。。大家有用自取
/**
* Do对象集合转换为Bo对象集合
*
* @param domainList DO对象集合
* @param tClass 将要转换 BO class对象
* @param <T>
* @param <E>
* @return
*/
public static <T,E> List<T> convertToBo(List<E> domainList, Class<T> tClass) {
if (CollectionUtils.isEmpty(domainList)) {
return Lists.newArrayList();
}
return domainList.stream().map(domain -> {
T t;
try {
t = (T) tClass.newInstance();
} catch (Exception exception) {
logger.warn("Bo转换对象出错-{}", JSON.toJSONString(exception));
return null;
}
BeanUtils.copyProperties(domain, t);
return t;
}).filter(Objects::nonNull).collect(toList());
}
/**
* 单个数据转换
*
* @param domain
* @param tClass
* @param <T>
* @param <E>
* @return
*/
public static <T, E> T convertToBo(E domain, Class<T> tClass) {
T t;
try {
t = (T) tClass.newInstance();
} catch (Exception exception) {
logger.warn("Bo转换对象出错-{}", JSON.toJSONString(exception));
return null;
}
if (Objects.isNull(domain)) {
return t;
}
BeanUtils.copyProperties(domain, t);
return t;
}