简介
MapperFacade
是Orika中最常用的接口之一,它的设计用于简化对象映射过程,能够高性能的将Java对象映射到其他Java对象中。
使用步骤
1.引入依赖
<dependency> <groupId>ma.glasnost.orika</groupId> <artifactId>orika-core</artifactId> <version>1.5.4</version> </dependency>
2.初始化MapperFactory
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
代码示例
public class MapperFacadeUtil {
private static MapperFacade mapper;
static {
//创建MapperFactory实例
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
//注册自定义转换器,用于处理日期或时间类型
ConverterFactory converterFactory = mapperFactory.getConverterFactory();
converterFactory.registerConverter(new BeanConv.LocalDateTimeConverter());
converterFactory.registerConverter(new BeanConv.LocalDateConverter());
converterFactory.registerConverter(new BeanConv.LocalTimeConverter());
//获取MapperFacade
mapper=mapperFactory.getMapperFacade();
}
}
3.编写工具类
此处以转换分页数据为例,此处进行两次转换,先转换page中非泛型的属性,再完成page内部列表数据的转换。
public static <T,D> Page<D> toConversion(Page<T> page,Class<D> convertedClass){
//如果page为空则直接返回
if (EmptyUtil.isNullOrEmpty(page)){
return null;
}
//获取page的字节码
Class<? extends Page> pageClass = page.getClass();
//转换page的外壳,创建一个模板类型为Page<D>的新实例,复制page的非泛型属性
Page<D> converted = mapper.map(page, pageClass);
//处理page内部列表的数据转换,完成整体的数据类型转换
converted.setRecords(mapper.mapAsList(page.getRecords(),convertedClass));
return converted;
}