使用Dozer Mapper API将java.sql.Time映射到Integer(毫秒)

问题描述 投票:0回答:1

我有2节课

public class A
{
    public java.sql.Time startAt;
}

public class B
{
    public int startAt;
}

如果我尝试映射它,我会收到错误,它无法将Time转换为Integer(自1970年1月1日起的毫秒数)。阅读我需要定义客户转换器的文档。我的问题是

  1. 如何使用Dozer API来完成它
  2. 有没有办法将java.sql.Time的所有实例转换为Integer?所以我不需要为每个类定义转换器?
java dozer
1个回答
0
投票

你创建一个这样的自定义类:

import java.util.Date;

import org.dozer.DozerConverter;
import org.joda.time.DateTime;

public class JodaTimeToDateConverter extends DozerConverter<Date, DateTime> {


  public JodaTimeToDateConverter() {
    super(Date.class, DateTime.class);
  }


  @Override
  public DateTime convertTo(Date source, DateTime destination) {
    DateTime result = null;
    if(source != null) {
      result = new DateTime(source.getTime());
    }
    return result;
  }

  @Override
  public Date convertFrom(DateTime source, Date destination) {
    Date result = null;
    if(source != null) {
      result = new Date(source.getMillis());
    }
    return result;
  }



}

然后,在dozer xml中添加一个configure块:

<configuration>
      <custom-converters>
            <converter type="foo.bar.CustomConverterClass">
                <class-a>java.util.Date</class-a>
                <class-b>org.joda.time.DateTime</class-b>
            </converter>
    </configuration>
© www.soinside.com 2019 - 2024. All rights reserved.