Java 类之间的转换,仅需要增加一个注解,减少了乏味且容易出错的开发任务
基于注解处理器,所有生成工作都在编译期完成
属性转换基于类中的 getter/setter 方法
支持JDK8~17、SpringBoot2~3
支持单个类配置多个类型转换
更强大的Map转对象功能
<dependency>
<groupId>io.github.linpeilie</groupId>
<artifactId>mapstruct-plus-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>
implementation group: 'io.github.linpeilie', name: 'mapstruct-plus-spring-boot-starter', version: '1.4.6'
SpringContextUtils
类名,防止与其他项目类名冲突;AutoMapping
、AutoMappings
、ReverseAutoMapping
、ReverseAutoMappings
特性;ReverseAutoMappings
配置不生效的问题ComponentModel
增加 spring-lazy
可选项,懒加载 Spring Bean,解决互相依赖的问题,并将默认配置改为该选项;unmappedTargetPolicy
默认配置不生效的问题;AutoMapper
注解增加 mapperNameSuffix
属性,支持配置生成的转换接口名称增加后缀,默认规则下生成的反向转换接口同时生效;Mapper
注解的 unmappedSourcePolicy
、unmappedTargetPolicy
、typeConversionPolicy
、collectionMappingStrategy
、nullValueMappingStrategy
、nullValueIterableMappingStrategy
、nullValuePropertyMappingStrategy
、nullValueCheckStrategy
、mappingControl
属性;Mapping
注解的 constant
、qualifiedBy
、nullValueCheckStrategy
、nullValuePropertyMappingStrategy
、mappingControl
;typeConversionPolicy
、collectionMappingStrategy
、nullValueIterableMappingStrategy
、nullValueMapMappingStrategy
、nullValueCheckStrategy
、mappingControl
、unexpectedValueMappingException
、suppressTimestampInGenerated
属性;AutoMapping
注解增加 reverseConvertGenerate
,控制是否生成反向转换逻辑,适配更加复杂的应用场景;targetClass
同时配置父类和子类时,转换规则冲突的问题;AutoMapper
增加 useEnums
属性,支持手动配置转换时需要的枚举,解决跨模块枚举无法自动转换的问题;AutoMapping
、ReverseAutoMapping
支持 qualifiedByName
、conditionQualifiedByName
和 dependsOn
属性AutoMappings
支持配置在方法上面升级 1.4.0 注意事项:
- 1.4.0 及以后的版本,复杂对象比较依赖项目中生成的
ConvertMapperAdapter
, 在多模块下,由于类加载机制只会加载一个的原因,可能会导致NoSuchMethodError
的异常, 当然,这个问题在之前也会有,几率可能低一些,所以多模块下,务必配置adapterPackage
来避免该问题。- Map 与对象的转换,还是依赖 hutool 中的类转换实现,如果需要该功能,需要额外引入
hutool-core
依赖包。
……
个人网站:代码笔耕
微信交流群
vx : Clue8a796d01
公众号:代码笔耕