https://segmentfault.com/a/11...这篇文章有同学关注问问有没有源码,所以分开发表在github上.方便的话给个star吧!!!代码仓库:https://github.com/DHBin/maps...mapstruct-helper简化了mapstruct的使用,灵感来自SpringIoc。cn.dhbinmapstruct-helper-core1.0.0示例//第一步:定义Mapper,继承cn.dhbin.mapstruct.helper.core.BeanConvertMapper@MapperpublicinterfaceFooToBooMapperextendsBeanConvertMapper{}//第二步:扫描加载Mapper(只需要配置一次)BeanConvertMappers.config(MapperConfig.defaultConfig("package").build());FooBeanfooBean=newFooBean();fooBean.setName("xxx");//使用assertEquals("xxx",BeanConvertMappers.convert(fooBean,BooBean.class).getName());assertEquals("xxx",BeanConvertMappers.convert(fooBean,newBooBean()).getName());APIMapper配置cn.dhbin.mapstruct.helper.core.MapperConfigBeanConvertMappers.config(MapperConfig.builder()//是否支持复制Bean的子类.supportSubclass(true)//mapperscanner.mapperDefinitionScanner(newDefaultMapperDefinitionScanner("scanPackage"))//转换方法.convertFunction((mapper,source)->{return((BeanConvertMapper)mapper).to(source);}).build()默认配置//默认不支持复制bean的子类MapperConfig.defaultConfig("scanPackage").build()扩展默认使用cn.dhbin.mapstruct.helper.core.BeanConvertMapper作为模板生成Mapper,但考虑到兼容性问题,支持自定义模板比如项目中原来的模板如下:publicinterfaceMyBeanConvertMapper{/***sourcetotarget**@paramsourcesource*@returntarget*/TARGETconvert(SOURCEsource);}兼容性通过以下配置实现:BeanConvertMappers.config(MapperConfig.builder().supportSubclass(false).mapperDefinitionScanner(newAbstractPackageMapperDefinitionScanner("package"){@OverridepublicClassgetMapperClass(){returnMyBeanConvertMapper.classtion(convertMapper;}vert})(mapper,source)->{return((MyBeanConvertMapper)mapper).convert(source);}).build());转换/复制属性publicstaticTconvert(Objectsource,ClasstargetClass);publicstaticTconvert(Objectsource,Ttarget);与Spring集成依赖于cn.dhbinmapstruct-helper-starter1.0.0使用//第一步:定义Mapper,继承cn.dhbin.mapstruct.helper.core.BeanConvertMapper@Mapper(componentModel="spring")publicinterfaceFooToBooMapperextendsBeanConvertMapper{}FooBeanfooBean=newFooBean();fooBean.setName("xxx");//直接使用BeanConvertMappersassertEquals("xxx",BeanConvertMappers.convert(fooBean,BooBean.class).getName());assertEquals("xxx",BeanConvertMappers.convert(fooBean,newBooBean()).getName());//扩展:继承cn.dhbin.mapstruct.helper.core.MapperConfig注册到Ioc中LICENSECopyright2021原始作者或作者。根据Apache许可证2.0版(“许可证”)获得许可;除非遵守许可证,否则您不得使用此文件。您可以在http://www.apache获得许可证的副本。org/licenses/LICENSE-2.0除非适用法律要求或书面同意,否则根据许可证分发的软件按“原样”BASI分发S,没有任何明示或暗示的保证或条件。请参阅许可证以了解许可证下的特定语言管理权限和限制。