lomkbok
-
1.18.20</org.projectlombok.version> -
-
org.projectlombokoupId> -
lombok</artifactId> -
${org.projectlombok.version} version> -
true</optional> - ependency>
安装lombok插件
mapstruct
-
1.5.5.Final</org.mapstruct.version> -
-
org.mapstructoupId> -
mapstruct</artifactId> -
${org.mapstruct.version} version> -
在Lombok和mapstruct一起使用时就会有一些冲突
Lombok和MapStruct都是用来简化Java代码的组件,它可以通过AnnotationProcessor在编译时自动生成代码,简化了我们日常开发。
都是编译时通过AnnotationProcessor生成的class文件
然后MapStruct会用到对象中的get、set方法,然后get、set方法又需要lombok来生成。所以我们需要空着这两者工作顺序。
解决:
lombok 1.18.16之后,添加path,必须使用 lombok-mapstruct-binding 插件。
-
0.2.0</lombok-mapstruct-binding.version> -
-
org.apache.maven.pluginsoupId> -
maven-compiler-plugin</artifactId> -
3.11.0 version> -
-
${java.version}</source> -
${java.version} target> -
-
-
-
org.mapstruct</groupId> -
mapstruct-processortifactId> -
${org.mapstruct.version}</version> - th>
-
-
org.projectlombok</groupId> -
lomboktifactId> -
${org.projectlombok.version}</version> - th>
-
-
org.projectlombok</groupId> -
lombok-mapstruct-bindingtifactId> -
${lombok-mapstruct-binding.version}</version> - th>
- </annotationProcessorPaths>
- configuration>
-
使用
一对一映射
- @Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
- public interface OrderMapper {
-
- @Mapping(target = "bankId", source = "orgId")
- @Mapping(target = "programDetails.days", source = "programDetails.days")
- OrderItemDto infoToOrderItem(Info info);
-
- }
多对一
如两个转换成一个对象
如果与mybatis的mapper冲突,可改为Convert包
会自动生成 OrderConverterImpl 在target中