map转dto,可以写成通用的吗
时间: 2023-07-22 07:06:57 浏览: 49
是可以写成通用的,具体思路是将map中的键值对映射到DTO对象的属性上。这里提供一个Java实现的示例代码:
```java
public static <T> T mapToDto(Map<String, Object> map, Class<T> clazz) throws Exception {
T dto = clazz.getDeclaredConstructor().newInstance();
BeanInfo beanInfo = Introspector.getBeanInfo(clazz);
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
String key = propertyDescriptor.getName();
if (map.containsKey(key)) {
Object value = map.get(key);
Method writeMethod = propertyDescriptor.getWriteMethod();
writeMethod.invoke(dto, value);
}
}
return dto;
}
```
这个方法接收两个参数,一个是Map类型的数据,另一个是目标DTO的Class对象。它通过反射获取目标DTO的属性信息,然后遍历Map中的键值对,将键与DTO的属性名匹配,将值赋给DTO的属性。这样就实现了将Map转换为DTO的通用方法。在使用时,只需要传入相应的Map和DTO的Class对象即可。