MapStruct中@Converter具体使用例子
时间: 2024-09-27 21:02:52 浏览: 30
MapStruct 的 `@Converter` 是一个非常有用的特性,它允许你在映射过程中自定义类型之间的转换。举个例子,假设你有两个类,一个是包含日期的简单对象 (`SourceDate`) 和另一个是你想使用的某种库或框架提供的日期格式 (`TargetDateTime`),MapStruct 默认的日期转换可能不符合你的需求。
```java
import org.mapstruct.Converter;
import org.mapstruct.Mapping;
import org.springframework.format.annotation.DateTimeFormat;
public interface DateMapper {
@Converter
default TargetDateTime toTargetDateTime(SourceDate sourceDate) {
// 这里假设 SourceDate 包含一个本地日期字段 (LocalDate dateField)
LocalDate localDate = sourceDate.getDateField();
// 使用Spring的DateTimeFormatter进行格式化
return new TargetDateTime(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
}
@Mapping(source = "dateField", target = "targetDateTime")
Destination mapSourceToDestination(SourceDate sourceDate);
class SourceDate {
private LocalDate dateField;
// 其他属性...
}
class TargetDateTime {
@DateTimeFormat(pattern = "yyyy-MM-dd") // 指定日期格式
private String targetDateTime;
// 其他属性...
}
class Destination {
private TargetDateTime targetDateTime;
// 其他属性...
}
}
```
在这个例子中,`toTargetDateTime` 方法就是一个自定义的转换器,它将 `SourceDate` 中的 `LocalDate` 转换成 `TargetDateTime` 中指定的日期格式。然后在 `mapSourceToDestination` 方法中,MapStruct会自动调用这个转换器。