工具类
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 ) ;