Java算法:反射实现map自动封装进实体类中 理解springmvc 参数封装底层原理
/**
* 数据集封装进list中 - 有字段映射集
* @param ds
* @param fieldMap
* @param clazz
* @param <T>
* @return
* @throws Exception
*/
private static <T> List<T> getInstance(List<Map<String, Object>> ds, Map<String, String> fieldMap, Class<T> clazz) throws Exception {
ArrayList<T> result = new ArrayList<>();
for (Map<String, Object> data : ds) {
Field[] declaredFields = clazz.getDeclaredFields();
Object newEntity = clazz.newInstance();
Set<String> keySet = fieldMap.keySet();
for (String s : keySet) {
String mapName = fieldMap.get(s);
for (Field field : declaredFields) {
field.setAccessible(true);
String name = field.getName();
if (name.equals(mapName)) {
field.set(newEntity, data.get(s));
}
}
}
result.add((T) newEntity);
}
return result;
}
/**
* 数据集封装进list中 - 无字段映射集
* @param ds
* @param clazz
* @param <T>
* @return
* @throws Exception
*/
private static <T> List<T> getInstance(List<Map<String, Object>> ds, Class<T> clazz) throws Exception {
ArrayList<T> result = new ArrayList<>();
for (Map<String, Object> data : ds) {
Field[] declaredFields = clazz.getDeclaredFields();
Object newEntity = clazz.newInstance();
for (Field field : declaredFields) {
field.setAccessible(true);
String name = field.getName();
field.set(newEntity, data.get(name));
}
result.add((T) newEntity);
}
return result;
}