- 增加反向转换配置参数

- 解决树状结构转换问题
This commit is contained in:
linpeilie 2023-02-26 18:07:18 +08:00
parent 8d25e9fed5
commit 7cdbcc1e82
8 changed files with 58 additions and 2 deletions

View File

@ -18,7 +18,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<mapstruct.version>1.5.1.Final</mapstruct.version>
<mapstruct-plus.version>1.1.3</mapstruct-plus.version>
<mapstruct-plus.version>1.1.4</mapstruct-plus.version>
<lombok.version>1.18.22</lombok.version>
</properties>

View File

@ -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<SysMenu> children;
}

View File

@ -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<SysMenuVo> children;
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -1,5 +1,7 @@
package io.github.linpeilie;
import java.util.List;
import java.util.stream.Collectors;
import org.mapstruct.MappingTarget;
public interface BaseMapper<S, T> {
@ -8,4 +10,8 @@ public interface BaseMapper<S, T> {
T convert(S source, @MappingTarget T target);
default List<T> convert(List<S> sourceList) {
return sourceList.stream().map(this::convert).collect(Collectors.toList());
}
}

View File

@ -13,4 +13,12 @@ public @interface AutoMapper {
Class<?>[] uses() default {};
/**
* 是否生成反向转换的接口
*
* @return true : 生成反向转换的接口
* false : 不生成反向转换的接口
*/
boolean reverseConvertGenerate() default true;
}

View File

@ -17,7 +17,7 @@
</modules>
<properties>
<mapstruct-plus.version>1.1.3</mapstruct-plus.version>
<mapstruct-plus.version>1.1.4</mapstruct-plus.version>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>