工具类
import cn.hutool.core.convert.Convert;
import cn.hutool.core.text.CharSequenceUtil;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class RC {
public interface ConverterName {
String cv(String name);
}
public static <T> List<T> toCamelCaseBO(List<Map<String, Object>> maps, Class<T> clazz) {
return toBO(maps, clazz, name -> name);
}
public static <T> List<T> toUnderlineCaseBO(List<Map<String, Object>> maps, Class<T> clazz) {
return toBO(maps, clazz, CharSequenceUtil::toUnderlineCase);
}
public static <T> List<T> toBigUnderlineCaseBO(List<Map<String, Object>> maps, Class<T> clazz) {
return toBO(maps, clazz, name -> CharSequenceUtil.swapCase(CharSequenceUtil.toUnderlineCase(name)));
}
public static <T> List<T> toBO(List<Map<String, Object>> maps, Class<T> clazz, ConverterName converter) {
List<T> list = new ArrayList<>(maps.size());
try {
for (Map<String, Object> map : maps) {
T instance = clazz.getDeclaredConstructor().newInstance();
Class<? super T> superclass = clazz;
do {
for (Field field : superclass.getDeclaredFields()) {
if (Modifier.isFinal(field.getModifiers())) continue;
field.setAccessible(true);
Object object = Convert.convert(field.getType(), map.get(converter.cv(field.getName())), null);
field.set(instance, object);
}
superclass = superclass.getSuperclass();
} while (!superclass.equals(Object.class));
list.add(instance);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
}
}
使用
Page<Map<String, Object>> page = viewStorageOutDao.findPage(bo, pageable);
List<Map<String, Object>> content = page.getContent();
List<ViewStorageOutDTO> dto = RC.toBigUnderlineCaseBO(content, ViewStorageOutDTO.class);