mirror of
https://gitee.com/easii/mapstruct-plus.git
synced 2025-12-06 17:18:43 +08:00
@AutoMapper add imports field
This commit is contained in:
parent
eb4b8cd5b8
commit
13668a59c3
@ -2,9 +2,10 @@ package io.github.linpeilie.model;
|
||||
|
||||
import io.github.linpeilie.annotations.AutoMapper;
|
||||
import io.github.linpeilie.annotations.AutoMapping;
|
||||
import java.time.LocalDateTime;
|
||||
import lombok.Data;
|
||||
|
||||
@AutoMapper(target = CarDto.class)
|
||||
@AutoMapper(target = CarDto.class, imports = LocalDateTime.class)
|
||||
@Data
|
||||
public class Car {
|
||||
|
||||
|
||||
@ -420,6 +420,7 @@ public class AutoMapperProcessor extends AbstractProcessor {
|
||||
autoMapperMetadata.getTargetClassName(), autoMapperMetadata.getSourceClassName());
|
||||
reverseMapperMetadata.setConvertGenerate(autoMapperMetadata.isReverseConvertGenerate());
|
||||
reverseMapperMetadata.setUsesClassNameList(autoMapperMetadata.getUsesClassNameList());
|
||||
reverseMapperMetadata.setImportsClassNameList(autoMapperMetadata.getImportsClassNameList());
|
||||
reverseMapperMetadata.setMapstructConfigClass(
|
||||
ClassName.get(AutoMapperProperties.getConfigPackage(), AutoMapperProperties.getConfigClassName()));
|
||||
if (CollectionUtil.isNotEmpty(autoMapperMetadata.getFieldReverseMappingList())) {
|
||||
@ -518,6 +519,7 @@ public class AutoMapperProcessor extends AbstractProcessor {
|
||||
return null;
|
||||
}
|
||||
List<ClassName> uses = transToClassNameList(autoMapper::uses);
|
||||
final List<ClassName> importsClassNameList = transToClassNameList(autoMapper::imports);
|
||||
List<AutoMappingMetadata> autoMappingMetadataList = buildFieldMappingMetadata((TypeElement) ele);
|
||||
autoMappingMetadataList.removeIf(mappingMetadata -> !isTargetFieldMapping(target, mappingMetadata));
|
||||
|
||||
@ -527,6 +529,7 @@ public class AutoMapperProcessor extends AbstractProcessor {
|
||||
AutoMapperMetadata metadata = initAutoMapperMetadata(source, target);
|
||||
|
||||
metadata.setUsesClassNameList(uses);
|
||||
metadata.setImportsClassNameList(importsClassNameList);
|
||||
metadata.setFieldMappingList(autoMappingMetadataList);
|
||||
metadata.setFieldReverseMappingList(reverseMappingMetadataList);
|
||||
metadata.setConvertGenerate(autoMapper.convertGenerate());
|
||||
|
||||
@ -102,6 +102,9 @@ public class AutoMapperGenerator {
|
||||
List<ClassName> usesClassNameList =
|
||||
Optional.ofNullable(metadata.getUsesClassNameList()).orElse(new ArrayList<>());
|
||||
|
||||
List<ClassName> importsClassNameList =
|
||||
Optional.ofNullable(metadata.getImportsClassNameList()).orElse(new ArrayList<>());
|
||||
|
||||
// config
|
||||
CodeBlock configCodeBlock = CodeBlock.builder()
|
||||
.add("$T.class", metadata.getMapstructConfigClass())
|
||||
@ -117,10 +120,21 @@ public class AutoMapperGenerator {
|
||||
}
|
||||
CodeBlock usesCodeBlock = usesCodeBuilder.add("}").build();
|
||||
|
||||
// imports
|
||||
final CodeBlock.Builder importsCodeBuilder = CodeBlock.builder().add("{");
|
||||
for (int i = 0; i < importsClassNameList.size(); i++) {
|
||||
importsCodeBuilder.add("$T.class", importsClassNameList.get(i));
|
||||
if (i != importsClassNameList.size() - 1) {
|
||||
importsCodeBuilder.add(",");
|
||||
}
|
||||
}
|
||||
final CodeBlock importsCodeBlock = importsCodeBuilder.add("}").build();
|
||||
|
||||
AnnotationSpec.Builder builder =
|
||||
AnnotationSpec.builder(ClassName.get(MAPSTRUCT_MAPPER_PACKAGE, MAPSTRUCT_MAPPER_CLASS_NAME))
|
||||
.addMember("config", configCodeBlock)
|
||||
.addMember("uses", usesCodeBlock);
|
||||
.addMember("uses", usesCodeBlock)
|
||||
.addMember("imports", importsCodeBlock);
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
|
||||
@ -11,6 +11,8 @@ public class AutoMapperMetadata extends AbstractMapperMetadata {
|
||||
|
||||
private List<ClassName> usesClassNameList;
|
||||
|
||||
private List<ClassName> importsClassNameList;
|
||||
|
||||
private List<AutoMappingMetadata> fieldMappingList;
|
||||
|
||||
private List<AutoMappingMetadata> fieldReverseMappingList;
|
||||
@ -47,6 +49,14 @@ public class AutoMapperMetadata extends AbstractMapperMetadata {
|
||||
return this;
|
||||
}
|
||||
|
||||
public List<ClassName> getImportsClassNameList() {
|
||||
return importsClassNameList;
|
||||
}
|
||||
|
||||
public void setImportsClassNameList(final List<ClassName> importsClassNameList) {
|
||||
this.importsClassNameList = importsClassNameList;
|
||||
}
|
||||
|
||||
public List<AutoMappingMetadata> getFieldMappingList() {
|
||||
return fieldMappingList;
|
||||
}
|
||||
|
||||
@ -16,6 +16,8 @@ public @interface AutoMapper {
|
||||
|
||||
Class<?>[] uses() default {};
|
||||
|
||||
Class<?>[] imports() default {};
|
||||
|
||||
/**
|
||||
* 是否生成转换的接口,当只想生成反向接口时,可以指定当前属性为 {@code false}
|
||||
*
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user