MapstructPlus 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
MapstructPlus 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
MapstructPlus 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
所属分类 开发工具
开源组织
地区 国产
投 递 者 林培烈
适用人群 未知
收录时间 2023-02-27

软件简介

Mapstruct Plus 是对 Mapstruct 框架的一个增强,只做增强,不做修改,可以通过一个注解,自动生成两个类之间的转换操作,省略了 Mapstruct 定义接口的操作,使 Java 类型转换更加便捷、优雅。

目标:做最简单、最强大的类型转换工具

链接

快速开始

下面演示如何使用 MapStruct Plus 来映射两个对象。

假设有两个类 UserDtoUser,分别表示数据层对象和业务层对象:

  • UserDto
public class UserDto {
    private String username;
    private int age;
    private boolean young;

    // getter、setter、toString、equals、hashCode
}
  • User
public class User {
    private String username;
    private int age;
    private boolean young;

    // getter、setter、toString、equals、hashCode
}

添加依赖

引入 mapstruct-plus-spring-boot-starter 依赖:

<properties>
    <mapstruct-plus.version>1.1.3</mapstruct-plus.version>
</properties>
<dependencies>
    <dependency>
        <groupId>io.github.linpeilie</groupId>
        <artifactId>mapstruct-plus-spring-boot-starter</artifactId>
        <version>${mapstruct-plus.version}</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
                <annotationProcessorPaths>
                    <path>
                        <groupId>io.github.linpeilie</groupId>
                        <artifactId>mapstruct-plus-processor</artifactId>
                        <version>${mapstruct-plus.version}</version>
                    </path>
                </annotationProcessorPaths>
            </configuration>
        </plugin>
    </plugins>
</build>

指定对象映射关系

User 或者 UserDto 上面增加注解 —— @AutoMapper,并设置 targetType 为对方类。

例如:

@AutoMapper(target = UserDto.class)
public class User {
    // ...
}

测试

@SpringBootTest
public class QuickStartTest {

    @Autowired
    private Converter converter;

    @Test
    public void test() {
        User user = new User();
        user.setUsername("jack");
        user.setAge(23);
        user.setYoung(false);

        UserDto userDto = converter.convert(user, UserDto.class);
        System.out.println(userDto);    // UserDto{username='jack', age=23, young=false}

        assert user.getUsername().equals(userDto.getUsername());
        assert user.getAge() == userDto.getAge();
        assert user.isYoung() == userDto.isYoung();

        User newUser = converter.convert(userDto, User.class);

        System.out.println(newUser);    // User{username='jack', age=23, young=false}

        assert user.getUsername().equals(newUser.getUsername());
        assert user.getAge() == newUser.getAge();
        assert user.isYoung() == newUser.isYoung();
    }

}

小结

引入依赖后,使用 Mapstruct Plus 步骤非常简单。

  1. 给需要转换的类添加 AutoMapper 注解
  2. 获取 Converter 实例,调用 convert 方法即可
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击加入讨论🔥(2) 发布并加入讨论🔥
发表了资讯
11/17 15:47

MapStructPlus 1.4.6 版本发布

MapStruct Plus 是 MapStruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。 MapStructPlus 官网 1.4.6 版本发布: 修改 SpringContextUtils 类名,防止与其他项目类名冲突; fix #108 : SpringContextUtils#getBeanFactory 方法改为静态; pr : 增加注解批量增加 AutoMapping、AutoMappings、ReverseAutoMapping、ReverseAutoMappings 特性;...

1
1
发表了资讯
06/29 14:10

MapStructPlus 1.4.3 发布,进一步优化 IDEA 本地开发体验

MapStruct Plus 是 MapStruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。 MapStructPlus 官网 v1.4.3 版本已更新, 进一步优化了 IDEA 本地开发体验。 feat: ComponentModel 增加 spring-lazy 可选项,懒加载 Spring Bean,解决互相依赖的问题,并将默认配置改为该选项; fix: 解决 unmappedTargetPolicy 默认配置不生效的问题; enhance: 优化...

0
1
发表了资讯
06/25 21:23

MapStructPlus 1.4.2 版本发布

MapStruct Plus 是 MapStruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。 MapStructPlus 官网 v 1.4.2 版本现已发布,更新内容如下: feat: AutoMapper 注解增加 mapperNameSuffix 属性,支持配置生成的转换接口名称增加后缀,默认规则下生成的反向转换接口同时生效; feat : 适配 Mapper 注解的 unmappedSourcePolicy、unmappedTargetPolicy、...

0
1
发表了资讯
03/16 23:54

MapStructPlus 1.4.0 版本发布,体积更轻量!性能更强!

MapStruct Plus 是 MapStruct 的增强工具,在 Mapstruct 的基础上,实现了自动生成 Mapper 接口的功能,并强化了部分功能,使 Java 类型转换更加便捷、优雅。 MapStructPlus官网 此次迎来了一次较大版本的更新,更新日志如下: 优化复杂对象转换逻辑,占用元空间更小!性能更快! 此版本针对于复杂对象的自动转换逻辑,进行了优化和部分的重新设计,减少了一些不必要的转换方法,占用元空间更小。 以 RuoYi-Vue-Plus 为例,使用...

1
5
发表了资讯
01/07 18:01

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 ...

2
4
发表了资讯
2023/07/02 22:17

MapStructPlus 1.3.5 发布

MapStructPlus 1.3.5 发布,具体更新内容如下: AutoMapping、ReverseAutoMapping支持配置在方法上面; AutoMapping、ReverseAutoMapping支持defaultExpression和conditionExpression属性

0
1
发表了资讯
2023/06/19 00:44

MapStructPlus 1.3.2 发布,全面适配 IDEA 部分编译,使用更加丝滑流畅!

1.3.2 更新日志 适配不可变类型,当需要转换的目标类型为不可变类型时,可以使用任意包下的 Immutable 注解标识; 全面适配 IDEA 部分编译问题,使用更加丝滑流畅。 适配不可变类型 这个是由 Jimmer 开源框架的作者提出,当是不可变类型时, 默认生成规则中的 T convert(S source, @MappingTarget T target) 方法,没有任何意义,且可能存在问题。 所以,当需要转换的目标类型为不可变类型时,可以使用任意包下的 Immutable 注解...

2
2
发表了资讯
2023/06/17 01:12

MapStructPlus 1.3.1 版本发布,更好地适配 IDEA 本地开发

今晚上更新了两个版本,1.3.0和1.3.1,主要为了解决 IDEA 部分编译时,出现的各种莫名奇妙的问题。 更新日志 新增编译参数的配置方式,解决 IDEA 部分编译导致的一系列问题; 更好地适配本地IDEA开发; AutoMapper 增加 imports 支持 问题描述 一段时间以来,有好几位朋友反馈过 MapStructPlus 在使用时,修改了类,启动会报错,但重新执行 mvn clean compile 又恢复了正常。 就是这么一个莫名其妙的问题,最近终于想到了原因!...

0
3
发表了资讯
2023/05/24 13:48

MapStructPlus 1.2.5 发布,新增 Solon 支持

MapStructPlus 1.2.5 发布,更新内容如下: fix: 解决 MapConvertMapperAdapter 编译警告问题 feat: 增加 nullValueMappingStrategy 和 nullValuePropertyMappingStrategy 配置项 feat: 适配 solon 主要更新内容为适配 Solon,使用方式基本等同于 SpringBoot 环境下的使用方式。与其主要有两点差距: 添加依赖不同 <dependencies> <dependency> <groupId>org.dromara.solon-plugins</groupId> ...

2
3
发表了资讯
2023/04/25 14:37

MapStructPlus 1.2.3 版本发布

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

7
8
发表了资讯
2023/03/27 21:43

MapStructPlus 1.2.2 版本发布,增加枚举自动转换

当需要进行枚举转换时(例如枚举转换为编码值,或者又编码转换为枚举),可以在目标枚举添加 @AutoEnumMapper 注解, 增加该注解后,在任意类型中需要转换该枚举时都可以自动转换。 使用该注解需要注意:当前注解必须有一个可以保证唯一的字段,并在使用当前注解时,将该字段名,添加到注解提供的 value 属性中。 还有就是注解和使用注解的类,要在同一个模块中。 例如: 商品状态枚举(Goods) @Getter @AllArgsConstructor...

0
6
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
2 评论
21 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部