您现在的位置是:首页 > 文章详情

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

日期:2024-01-07点击:197

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 - 指南 - 配置项

原文链接:https://www.oschina.net/news/274615
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章