diff --git a/example/pom.xml b/example/pom.xml index 1bfa946..0ea7b01 100644 --- a/example/pom.xml +++ b/example/pom.xml @@ -18,7 +18,7 @@ UTF-8 1.5.1.Final - 1.1.3 + 1.1.4 1.18.22 diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/model/SysMenu.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/model/SysMenu.java new file mode 100644 index 0000000..308199a --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/model/SysMenu.java @@ -0,0 +1,15 @@ +package io.github.linpeilie.model; + +import io.github.linpeilie.annotations.AutoMapper; +import java.util.List; +import lombok.Data; + +@AutoMapper(target = SysMenuVo.class, reverseConvertGenerate = false) +@Data +public class SysMenu { + + private String path; + + private List children; + +} diff --git a/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/model/SysMenuVo.java b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/model/SysMenuVo.java new file mode 100644 index 0000000..b03919f --- /dev/null +++ b/example/spring-boot-with-lombok/src/main/java/io/github/linpeilie/model/SysMenuVo.java @@ -0,0 +1,13 @@ +package io.github.linpeilie.model; + +import java.util.List; +import lombok.Data; + +@Data +public class SysMenuVo { + + private String path; + + private List children; + +} diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java index 83c2a93..88fd1f9 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/AutoMapperProcessor.java @@ -225,6 +225,9 @@ public class AutoMapperProcessor extends AbstractProcessor { mapperList.forEach(autoMapperMetadata -> { final AutoMapperMetadata reverseMapperMetadata = reverseMapper(autoMapperMetadata); + if (!reverseMapperMetadata.isReverseConvertGenerate()) { + return; + } if (!mapperSet.add(reverseMapperMetadata.mapperName())) { return; } @@ -337,6 +340,7 @@ public class AutoMapperProcessor extends AbstractProcessor { metadata.setSuperGenerics(new ClassName[] {source, target}); metadata.setMapstructConfigClass( ClassName.get(AutoMapperProperties.getConfigPackage(), AutoMapperProperties.getConfigClassName())); + metadata.setReverseConvertGenerate(autoMapper.reverseConvertGenerate()); return metadata; } diff --git a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java index 56fb324..92ebcca 100644 --- a/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java +++ b/mapstruct-plus-processor/src/main/java/io/github/linpeilie/processor/metadata/AutoMapperMetadata.java @@ -19,6 +19,8 @@ public class AutoMapperMetadata extends AbstractMapperMetadata { private ClassName mapstructConfigClass; + private boolean reverseConvertGenerate; + public String mapperName() { return sourceClassName.simpleName() + "To" + targetClassName.simpleName() + "Mapper"; } @@ -73,4 +75,12 @@ public class AutoMapperMetadata extends AbstractMapperMetadata { public void setMapstructConfigClass(final ClassName mapstructConfigClass) { this.mapstructConfigClass = mapstructConfigClass; } + + public boolean isReverseConvertGenerate() { + return reverseConvertGenerate; + } + + public void setReverseConvertGenerate(final boolean reverseConvertGenerate) { + this.reverseConvertGenerate = reverseConvertGenerate; + } } diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/BaseMapper.java b/mapstruct-plus/src/main/java/io/github/linpeilie/BaseMapper.java index c146141..e7991bc 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/BaseMapper.java +++ b/mapstruct-plus/src/main/java/io/github/linpeilie/BaseMapper.java @@ -1,5 +1,7 @@ package io.github.linpeilie; +import java.util.List; +import java.util.stream.Collectors; import org.mapstruct.MappingTarget; public interface BaseMapper { @@ -8,4 +10,8 @@ public interface BaseMapper { T convert(S source, @MappingTarget T target); + default List convert(List sourceList) { + return sourceList.stream().map(this::convert).collect(Collectors.toList()); + } + } diff --git a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java index 9e553e3..7bf781e 100644 --- a/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java +++ b/mapstruct-plus/src/main/java/io/github/linpeilie/annotations/AutoMapper.java @@ -13,4 +13,12 @@ public @interface AutoMapper { Class[] uses() default {}; + /** + * 是否生成反向转换的接口 + * + * @return true : 生成反向转换的接口 + * false : 不生成反向转换的接口 + */ + boolean reverseConvertGenerate() default true; + } diff --git a/pom.xml b/pom.xml index def1a76..d03bc1d 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,7 @@ - 1.1.3 + 1.1.4 8 8 UTF-8