Java中实体与Map的相互转换
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class EntityMapConverter {
/**
* 将实体类转换为Map
* @param entity 实体类对象
* @return Map对象
*/
public static Map<String, Object> entityToMap(Object entity) {
Map<String, Object> map = new HashMap<>();
Class<?> clazz = entity.getClass();
for (Field field : clazz.getDeclaredFields()) {
try {
field.setAccessible(true); // 设置私有属性可访问
map.put(field.getName(), field.get(entity));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return map;
}
/**
* 将Map转换为实体类
* @param map Map对象
* @param clazz 实体类的Class对象
* @return 实体类对象
*/
public static <T> T mapToEntity(Map<String, Object> map, Class<T> clazz) {
T entity;
try {
entity = clazz.newInstance();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
int modifiers = field.getModifiers();
if (Modifier.isStatic(modifiers) || Modifier.isFinal(modifiers)) {
continue; // 跳过静态属性和final属性
}
field.setAccessible(true); // 设置私有属性可访问
field.set(entity, map.get(field.getName()));
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return entity;
}
}
这段代码提供了实体类和Map之间互相转换的方法。entityToMap
方法通过反射遍历实体类的属性,将它们的名字作为键,属性值作为值存入Map中。mapToEntity
方法则是将Map中的数据通过反射设置到实体类的对应字段中。注意,在转换过程中,私有属性需要设置为可访问,这通过调用setAccessible(true)
方法实现。
评论已关闭