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