我使用的是1.4.1.Final版本,低版本可能会无法使用本文中的解决方法,感谢@VAYO的回复评论。

今天用mapstruct映射字段转换对象的时候,想要忽略公共基础字段(类似于id,创建时间,更新时间这种)。从网上搜了下,用法都是在接口上写Mapping,然后配置target=‘字段名’,ignore='true'。

能用,但是太麻烦。我有好多转换的地方都要忽略这种公共字段。每个接口都配置一遍,太难受了。

类似下面这个图的用法,忽略字段

参考官方文档: https://mapstruct.org/documentation/stable/reference/html/#mapping-composition
可以自己写个注解,在注解里配置好要忽略的字段,然后放到要用的方法上就行了。非常nice。

@Retention(RetentionPolicy.CLASS)
@Mappings(value = {
        @Mapping(target = "id", ignore = true),
        @Mapping(target = "gmtCreated", ignore = true),
        @Mapping(target = "gmtModified", ignore = true)
public @interface MappingIgnore {}
@MappingIgnore
UserRewardDetail transToUserRewardDetail(UserReward userReward);
1.问题今天用mapstruct映射字段转换对象的时候,想要忽略公共基础字段(类似于id,创建时间,更新时间这种)。从网上搜了下,用法都是在接口上写Mapping,然后配置target=‘字段名’,ignore='true'。能用,但是太麻烦。我有好多转换的地方都要忽略这种公共字段。每个接口都配置一遍,太难受了。类似下面这个图的用法,忽略字段2.解决参考官方文档:https://mapstruct.org/documentation/stable/reference/html/#ma 在 Java 应用程序中,希望将值从一种 Java bean复制到另一种 Java bean。使用诸如 MapStruct 之类的bean 映射 器。 虽然使用相同的 字段 名称 映射 相同的 字段 非常简单,但是经常会遇到不匹配的bean 2. 映射 MapStruct Java 注释处理器。 要做的就是定义 映射 器接口并声明 映射 方法。 MapStruct 将在编译期间生成此接口的实现。 3.未 映射 的属性 由于 MapStruct 在编译 运行,因此它比动态 映射 框架要快。 如果 映射 不完整(即,并非所有目标属性都被 映射 ),它也可以生成错 MapStruct 用于生成安全的Bean的 映射 类。 MapStruct 采用注解的方式,使用它我们所需要做的就是定一个 映射 的接口,该接口中声明任何需要的 映射 方法。在代码的编译期间,由 MapStruct 生成该接口的实现类。值得注意的是, MapStruct 在实现接口的 候并没有采用反射的方式,而是采用普通的 java 方法来实现的。 简单来说,我们在实际的项目中很多书情况下,都会遇到不同模块层之间的数据进行传递的 候,需要涉及到对象的转换: 1、比如在经典三层的项目架构中,dao层的entity需要传递给 IntelliJ IDEA插件,可与 MapStruct 一起使用 什么是 MapStruct MapStruct 是一个 Java 用于为 Java Bean类生成类型安全和高性能的 映射 器。 要了解有关 MapStruct 的更多信息,请查看存储库或 完成@ Mapping 注释中的target和source属性(嵌套属性也可以使用) @Value Mapping 批注中target和source属性的完成 @Mapper和@MapperConfig批注中的componentModel完成 为声明者和获取者的target和source属性转到声明 在target和source查找属性的用法,并在@ Mapping 注释中查找setter / getter的@ Mapping 突出显示target和source属性 错误和快速修复: 缺少@Mapper或@MapperConfig批注
MapStruct - Java Bean 映射 ,简单方法! 什么是 MapStruct MapStruct 是一个 Java 用于为 Java Bean类生成类型安全和高性能的 映射 器。 它使您不必手工编写 映射 代码,这是一个繁琐且容易出错的任务。 该生成器具有合理的默认值和许多内置的类型转换,但是在配置或实现特殊行为 ,它会自动退出。 与在运行 工作的 映射 框架相比, MapStruct 具有以下优点: 通过使用普通方法调用而不是反射来快速执行 编译 类型安全。 只能 映射 彼此 映射 的对象和属性,因此不会将订单实体意外 映射 到客户DTO等。 独立的代码-没有运行 依赖 如果发生以下情况,则在构建 清除错误报告:
它是什么? MapStruct 是一个代码生成器,它基于约定优于配置的方法极大地简化了 Java bean类型之间 映射 的实现。 生成的 映射 代码使用简单的方法调用,因此快速,类型安全且易于理解。 多层应用程序通常需要在不同的对象模型(例如实体和DTO)之间进行 映射 。 编写此类 映射 代码是一项繁琐且容易出错的任务。 MapStruct 旨在通过使其尽可能自动化来简化这项工作。 与其他 映射 框架相比, MapStruct 在编译 生成Bean 映射 ,以确保高性能,允许快速的开发人员反馈和彻底的错误检查。 MapStruct 是一个注释处理器,已插入 Java 编译器,可用于命令行构建(Maven,Gradle等),也可以在您首选的IDE中使用。 MapStruct 使用合理的默认值,但是在配置或实现特殊行为 会避开您的使用。
在一个成熟可维护的工程中,细分模块后,domian工程最好不要被其他工程依赖,但是实体类一般存于domain之中,这样其他工程想获取实体类数据 就需要在各自工程写model,自定义model可以根据自身业务需要而并不需要 映射 整个实体属性。 mapstruct 这个插件就是用来处...
文章目录@[toc]使用由Spring代理不由spring代理其它属性 ignore 原理 Json工具是通过序列化反序列化来实现的,性能低下。 MapStruct 是通过getter、setter来实现的。 <!-- MapStruct 依赖--> <!-- https://mvnrepository.com/artifact/org. mapstruct / mapstruct -jdk8 --> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-processor</artifactId> <version>1.4.2.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct-jdk8</artifactId> <version>1.4.2.Final</version> </dependency> <dependency> <groupId>org.mapstruct</groupId> <artifactId>mapstruct</artifactId> <version>1.4.2.Final</version> </dependency> [/code]