MapStructPlus 1.3.6 发布,支持内部类转换和继承 AutoMapping 配置等特性


MapStruct Plus 是 MapStruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。

MapStructPlus官网

更新日志

  • 兼容内部类转换

    示例:

    @Data
    @AutoMapper(target = Car.InnerClass.class)
    public class InnerClassTarget {
    
        private String f;
    
    }
    
    @Data
    public class Car {
    
        @Data
        public static class InnerClass {
            private String f;
        }
    
    }
    
    @Test
    public void innerClassTest() {
        Car.InnerClass innerClass = new Car.InnerClass();
        innerClass.setF("1111");
        InnerClassTarget innerClassTarget = converter.convert(innerClass, InnerClassTarget.class);
        Assert.equals(innerClassTarget.getF(), "1111");
        System.out.println(innerClassTarget);
    
        Car.InnerClass innerClass1 = converter.convert(innerClassTarget, Car.InnerClass.class);
        Assert.equals(innerClass1.getF(), "1111");
        System.out.println(innerClass1);
    }
    
  • feature : AutoMapping 注解中的 targetClass 支持配置父类

    AutoMapping 注解中的 targetClass 支持配置父类,当目标类是该配置的子类时,即可应用该规则。

  • issue#I8T7EF : 支持在父类中配置的 AutoMapping 注解

    之前的版本中,在父类中配置的 AutoMapping 注解,并不会生效,在该版本中,解决了这个问题。

    示例:

    • PDto

    @Data
    public class PDto {
    
        @AutoMapping(targetClass = PVO.classexpression "java(source.getSuccess() ? 1 : 0)")
        private Boolean success;
    
    }
    
    • PVO

    @Data
    public class PVO {
    
        @AutoMapping(targetClass = PDto.classexpression "java(source.getSuccess().equals(1) ? true : false)")
        private Integer success;
    
    }
    
    • SDto

    @Data
    @ToString(callSuper = true)
    @AutoMapper(target = SVO.class)
    public class SDto extends PDto {
    
        private Long id;
    
    }
    
    • SVO

    @Data
    @ToString(callSuper = true)
    @AutoMapper(target = SDto.class)
    public class SVO extends PVO {
    
        private Long id;
    
    }
    
    • 测试

    @Test
    public void extendTest() {
        SDto sDto = new SDto();
        sDto.setId(111111L);
        sDto.setSuccess(true);
    
        SVO svo = converter.convert(sDto, SVO.class);
        Assert.equals(svo.getId(), sDto.getId());
        Assert.equals(svo.getSuccess(), 1);
        System.out.println(svo);
    
        SDto sDto1 = converter.convert(svo, SDto.class);
        Assert.equals(sDto1.getId(), sDto.getId());
        Assert.equals(sDto1.getSuccess(), sDto.getSuccess());
        System.out.println(sDto1);
    }
    
  • issue#I8QPRO : 框架自动生成的 AutoMapperConfig 和 AutoMapMapper 包和类名支持配置

    增加了三个配置项,支持注解配置和启动参数配置:

    • autoConfigPackage:MapStructPlus 框架自动生成的配置类 --- AutoMapperConfig/AutoMapMapperConfig 所在的包路径

    • autoMapperConfigClassName:MapStructPlus 框架自动生成的的配置类(配置对象之间的转换)类名

    • autoMapMapperConfigClassName:MapStructPlus 框架自动生成的配置类(配置Map与对象之间的转换)类名

    详情可以参考MapStructPlus - 指南 - 配置项


相關推薦

2024-03-18

并强化了部分功能,使 Java 类型转换更加便捷、优雅。 MapStructPlus官网 此次迎来了一次较大版本的更新,更新日志如下: 优化复杂对象转换逻辑,占用元空间更小!性能更快! 此版本针对于复杂对象的自动转换逻辑,

2023-06-18

支持 问题描述 一段时间以来,有好几位朋友反馈过 MapStructPlus 在使用时,修改了类,启动会报错,但重新执行 mvn clean compile 又恢复了正常。 就是这么一个莫名其妙的问题,最近终于想到了原因! 原因 首先,该问题出现

2023-03-28

当需要进行枚举转换时(例如枚举转换为编码值,或者又编码转换为枚举),可以在目标枚举添加 @AutoEnumMapper 注解, 增加该注解后,在任意类型中需要转换该枚举时都可以自动转换。 使用该注解需要注意:当前注解必

2023-04-26

MapStructPlus 1.2.3 版本现已发布,具体更新内容如下: MapStruct 版本由 1.5.3.Final 升级为 1.5.5.Final 增加自定义 ConvertMapperAdapter 和 MapConvertMapperAdapter 类名和包名的功能,可以参考配置文档 生成的转换接口,自动接入自定义转换

2023-07-09

YMP 是一个非常简单、易用的轻量级 Java 应用开发框架,涵盖 AOP、IoC、WebMVC、ORM、Validation、Plugin、Serv、Cache 等特性,主要技术特点: 采用组件化、模块方式打包,可按需装配,灵活可扩展; 采用微内核实现 AutoScan、AOP、

2023-10-17

https://github.com/dromara/liteflow 前言 上一个版本是9月1日发布的,经过了一个半月,LiteFlow新的v2.11.1和大家见面了。 这个版本总共带来了7个大特性,3个增强,2个修复。总计12个issue的更新。 其实这已经比上一个大版本已经有

2023-06-14

EasyRelation 1.1.1 发布,新版本更新日志: 更新 MapStructPlus 版本 1.2.1 --> 1.2.5 添加自动关联数据功能 当想要对一个方法的结果自动关联相关数据时,可以在方法上面增加 @AutoRelation 注解, 框架会对其方法返回的结

2023-10-17

【源创会预告】1024 程序员节(的前两天),相约开源PHP办公室,我们一起聊 AI!>>> Solon 是什么框架? Java 生态级应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模)。与

2023-12-26

nbsp;4.9.1.11 ⏱️2023.12.04 b62bfb1 [新增] 控制台日志支持启动时同步 ConsoleFormatterExtendOptions 配置 4.9.1.10 ⏱️2023.12.04 a96fe08 [新增] 定时任务支持取消正在运行的作业程序 4.9.1.9 ⏱️2023.12.03 3cc9

2022-07-26

迁移。至于 Carbon,它与 Rust 有许多相同的目标,并且支持与现有的 C++ 代码完全互操作,目标是让开发者尽可能轻松地从 C++ 迁移到 Carbon。 Carbon 亮点: Introducer 关键字和简单语法 函数输入参数为只读值 指针提供间接

2023-06-16

更新日志 重点说明: 由于 SpringCloudAlibaba 一直未发布正式版 导致系统底层组件可能存在些许问题 故而不建议生产使用 框架也将直接开启后续 2.1.0 的开发工作 重大更新 [不兼容升级] java 版本从 jdk 8 升级到 jdk 17 且需要使用

2023-11-07

name="dialectAlias" value="dm=oracle"/> PageHelper Spring Boot Starter 发布 2.0.0 v2.0.0 - 2023-11-05 升级 PageHelper 到 6.0.0,支持异步 count 等功能,详细查看 6.0 升级 MyBatis 到 3.5.15 升级 springboot 到 2.7.17 新增参数 asyncCount,增加异步

2023-04-24

本次正式版本更新,主要是企业微信模块增加了大量接口,包括企业互联相关接口,以及会议相关接口等,并修复了一些问题;小程序模块则主要增加了新版自定义交易组件的一些接口,修复若干bug;微信支付模块则主要是补充

2023-05-16

架。  更多介绍,请见官网:https://therouter.cn 本次发布 1.1.3 版本,更新如下: feature: @ActionInterceptor 支持注释声明 feature: 路由跳转拦截器新增watch()方法,支持指定path生效,默认所有页面均生效 feature: 支持dyn