You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
package com.glxp.api.util;
|
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
public class EntityToMapConverter {
|
|
|
|
|
|
|
|
|
|
public static <T> Map<String, Object> convertEntityToMap(T entity) {
|
|
|
|
|
if (entity == null) {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Map<String, Object> result = new HashMap<>();
|
|
|
|
|
Class<?> clazz = entity.getClass();
|
|
|
|
|
|
|
|
|
|
// 获取所有字段(包括私有字段,但需要设置setAccessible(true))
|
|
|
|
|
Field[] fields = clazz.getDeclaredFields();
|
|
|
|
|
|
|
|
|
|
for (Field field : fields) {
|
|
|
|
|
field.setAccessible(true); // 设置为可访问,以便访问私有字段
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 获取字段的值
|
|
|
|
|
Object value = field.get(entity);
|
|
|
|
|
result.put(field.getName(), value);
|
|
|
|
|
} catch (IllegalAccessException e) {
|
|
|
|
|
// 这通常不会发生,因为我们已经调用了setAccessible(true)
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|