dozer是一個java bean copy類庫,性能優於apache的BeanUtils,但是他們兩個都會對空屬性進行拷貝,這點很不方便。在dozer中可以使用xml映射禁用空屬性拷貝,還得配置xml,感覺很麻煩。
其實可以構造一個BeanMappingBuilder,對mapping進行配置。
mapping(sources.getClass(), destination.getClass(), mapNull(false), mapEmptyString(false));
分別對
org.dozer.loader.api.TypeMappingOptions.mapEmptyString
org.dozer.loader.api.TypeMappingOptions.mapNull
設置成false即可。
於是可以封裝成一個util
public static void copyProperties(final Object sources, final Object destination) { WeakReference weakReference = new WeakReference(new DozerBeanMapper()); DozerBeanMapper mapper = (DozerBeanMapper) weakReference.get(); mapper.addMapping(new BeanMappingBuilder() { @Override protected void configure() { mapping(sources.getClass(), destination.getClass(), mapNull(false), mapEmptyString(false)); } }); mapper.map(sources, destination); mapper.destroy(); weakReference.clear(); }