如何在Java中使用MapStruct将字符串转换为日期?

pn9klfpd  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(608)

我使用MapStruct将值从源Map到目标类。源类有一个String属性,目标类有一个java.util.Date属性。源属性如下所示:“yyyy-mm-dd”。我想把这个String属性转换成Date属性。我怎么用MapStruct来做呢?谢谢!

gpfsuwkq

gpfsuwkq1#

MapStruct自动处理StringDate的转换。如果你需要指定日期的格式,你可以这样做:

@Mapping(target = "date", dateFormat = "yyyy-MM-dd")
Destination map(Source source);

//For datetime
@Mapping(target = "date", dateFormat = "yyyy-MM-dd'T'HH:mm:ss")
Destination map(Source source);

其中target = "date"是属性的名称。您可以在MapStruct文档中找到更多有关此内容的信息。

zpjtge22

zpjtge222#

从官方指南来看,如果你有多个日期,你可以使用这个:

public class DateMapper {

    public String asString(Date date) {
        return date != null ? new SimpleDateFormat( "yyyy-MM-dd" )
            .format( date ) : null;
    }

    public Date asDate(String date) {
        try {
            return date != null ? new SimpleDateFormat( "yyyy-MM-dd" )
                .parse( date ) : null;
        }
        catch ( ParseException e ) {
            throw new RuntimeException( e );
        }
    }
}

在你的mapper中:

@Mapper(uses=DateMapper.class)
public interface CarMapper {

    CarDto carToCarDto(Car car);
}

相关问题