摸鱼时间写了个简单的Ao转Do的方法类,个人感觉还是蛮好用的。
public class BeanConvertor {
private static final Map<Class<?>, Constructor<?>> constructorCache = new ConcurrentHashMap<>();
public static <T, R> R convert(T source, Class<R> targetClass) {
if (source == null) return null;
try {
Constructor<?> constructor = constructorCache.computeIfAbsent(targetClass, clazz -> {
try {
return clazz.getDeclaredConstructor();
} catch (NoSuchMethodException e) {
throw new RuntimeException("类 " + clazz.getName() + " 缺少无参构造函数", e);
}
});
R target = (R) constructor.newInstance();
BeanUtils.copyProperties(source, target);
return target;
} catch (Exception e) {
throw new RuntimeException("转换失败", e);
}
}
}
调用示例如下
// ao是已经有的,现在需要吧AO转为DO
OldPortGateMaintainDo convert = BeanConvertor.convert(gateMaintainAo, OldPortGateMaintainDo.class);
很简单的东西,随便水一下