![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
mapstruct
文章平均质量分 88
文香P
我到底在做些什么啊
展开
-
MapStruct文档(一)——简介
mapstruct是一个java的bena对象转换映射工具。只需定义mapper接口,会在编译时动态生成set/get的class实现类文件,在运行时直接调用。速度快,其他性能指标也很好。需要配置的mavne设置...<dependencies> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</a.原创 2020-12-09 15:04:40 · 2548 阅读 · 0 评论 -
MapStruct文档(十三)——问题分析
12.1、AbstractProcessorAbstractProcessor可以在编译时获取注解,生成代码。主要的方法有:init:做一些初始化操作。process:核心处理。返回是boolean类型,false表示继续由其他处理器处理该“元素(包、类、方法、变量等)”上的注解类型(当前要处理的注解集合)。getSupportedAnnotationTypes:获取可以处理的注解。可以在AbstractProcessor的实现类上使用@SupportedAnnotationTyp...原创 2020-12-10 13:51:55 · 3058 阅读 · 0 评论 -
MapStruct文档(十二)——protobuf映射
目录11.1、protobuf211.2、protobuf311.1、protobuf2定义一些基础类enum DownloadResourceTypeEnum{ download_resource_type_enum_audio = 0; //音频 download_resource_type_enum_vedio = 1; //视频 download_resource_type_enum_picture = 2; //图片 download_resource..原创 2020-12-10 13:36:39 · 3132 阅读 · 0 评论 -
MapStruct文档(十一)——SPI
mapstruct提供了一些列SPI,供我们自定义实现一些功能:AccessorNamingStrategy(实现自定义的get/set,获取字段名)、DefaultProvider(实现自定义的建造者)、MappingExclusionProvider(实现自定义的排除,也就是不自动映射字段)、EnumMappingStrategy(实现自定义的枚举命名)、EnumTransformationStrategy(实现自定义的枚举转换)。要实现自定义功能要先建一个项目,可以打包成jar包,自定义的实现以上原创 2020-12-10 11:11:54 · 1260 阅读 · 1 评论 -
MapStruct文档(十)——映射扩展
目录9.1、*装饰器映射9.2、映射前置/后置方法9.3、循环嵌套对象调用前后置方法9.1、*装饰器映射在进行映射时可以通过装饰器模式,为目标对象设置一些,不能由源对象直接生成或者源对象没有的属性。spring注入策略的装饰器映射使用@DecoratedWith注解制定装饰器。装饰器中使用@Qualifier("delegate")指定注入的bean。@Mapper@DecoratedWith(TestDecotator.class)public interface原创 2020-12-09 16:19:29 · 4161 阅读 · 0 评论 -
MapStruct文档(九)——高级映射选项
目录8.1、映射配置继承8.2、逆映射8.3、共享配置8.3.1、MappingInheritanceStrategy.EXPLICIT8.3.2、MappingInheritanceStrategy.AUTO_INHERIT_FROM_CONFIG8.3.3、MappingInheritanceStrategy.AUTO_INHERIT_REVERSE_FROM_CONFIG8.3.4、MappingInheritanceStrategy.AUTO_INHERIT_ALL_FR原创 2020-12-09 16:16:54 · 10108 阅读 · 0 评论 -
MapStruct文档(八)——高级映射选项
目录7.1、默认值7.2、表达式7.2、确定映射结果的具体类型7.4、NULL映射控制7.4.1、源对象NULL映射7.4.3、在更新时源对象属性NULL映射7.4.3、何时NULL检查7.1、默认值可以给@Mapping的属性defaultValue设置一个值,若果源字段为空,那么目标字段就为此默认值。@Mapper(uses = BaseMapper.class)public interface TestMapper { @Mapping(targ原创 2020-12-09 16:13:15 · 8525 阅读 · 0 评论 -
MapStruct文档(七)——对象工厂
目录6、对象工厂6.1、映射工厂6.2、更新工厂6、对象工厂6.1、映射工厂在映射成目标对象时,创建目标对象实例,可以使用@ObjectFactory注解的方法取代调用默认的构造方法创建目标对象,工厂方法可以是无参返回类型是目标类型的方法,无参的工厂方法可以不设置@ObjectFactory注解;或有参返回类型是目标类型的方法,参数可以用@TargetType或@Context注解。@Datapublic class TestFivePO { private Te原创 2020-12-09 16:09:22 · 988 阅读 · 0 评论 -
MapStruct文档(六)——枚举映射
目录5.1、枚举和枚举映射5.2、枚举和String映射5.2.1、enum to String5.2.2、String to enum5.3、自定义名称转换5.1、枚举和枚举映射枚举通常是直接映射到同名的枚举对象中,不同名需@ValueMapping指定,并且源和目标上可以设置MappingConstants.ANY_REMAINING:只能用在source上,标识source中除了同名自动映射和指定映射外,其余所有对象都映射到target对象上。MappingC.原创 2020-12-09 16:05:46 · 9289 阅读 · 0 评论 -
MapStruct文档(五)——集合映射
目录4.1、List4.2、Map4.3、更新集合4.4、集合策略4.5、*集合属性映射4.5.1、手动创建add方法4.5.2、getter和adder类型不同4.5.3、多个相同参数列表的add方法4.1、List迭代的每一项遵循以上规则。@Mapperpublic interface TestMapper { TestBO testToBO(TestPO testPO); List<TestBO> testToBOS(L原创 2020-12-09 15:58:59 · 4551 阅读 · 0 评论 -
MapStruct文档(四)——转换
目录3.1、隐式转换3.1.1、枚举、BigDecimal、Date、Timestamp3.1.2、LocalDateTime3.1.3、Boolean3.2、*对象属性转换3.3、将映射目标类型传递给自定义映射器3.4、将上下文或状态对象传递给自定义方法3.5、区别相同参数类型和返回类型的映射方法3.1、隐式转换enum和String BigDecimal(等)、基本数据类(包括包装类)和String java.time.LocalDateTime(等)和.原创 2020-12-09 15:46:18 · 7398 阅读 · 0 评论 -
MapStruct文档(三)——Spring注入
通常我们的项目都是基于spring的,对象的注入就必不可少。在pom文件的bulid->plugins->plugin(maven-compiler-plugin)->configuration下添加相应配置。mapstruct配置...<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin<原创 2020-12-09 15:38:14 · 5539 阅读 · 0 评论 -
MapStruct文档(二)——映射
1、映射1.1、自定义方法若mapstruct满足不了我们的需求,也可以自己写转换方法。1.1.1、抽象类@Mapperpublic abstract class TestMapper { public TestBO testToBO(TestPO testPO) { TestBO testBO = new TestBO(); testBO.setName(testPO.getName() + "BO"); return ...原创 2020-12-09 15:20:16 · 3359 阅读 · 0 评论