Java - 使用DBUtils BeanListHandler将查询中的所有日期转换为JodaTime的DateTime

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

我正在使用BeanListHandler将数据库中的行转换为POJO。它一直很好,但现在我需要做一些日期比较。为此,我决定使用JodaTime。

我希望将查询结果集中的所有时间戳/日期类型行转换为JodaTime的DateTime类而不是默认的Timestamp。我尝试使用setter来做到这一点,但BeanListHandler似乎没有调用setter来设置值(它是否使用反射?)。

我该怎么做呢?

java datetime timestamp jodatime apache-commons-dbutils
1个回答
0
投票

我不认为有一个直接的解决方案。一个解决方法是在POJO中同时包含TimestampDateTime字段,并在DateTime属性的setter方法中设置Timestamp值,如下例所示。

public class Pojo{
    private Timestamp timestamp;
    private DateTime dateTime;

    public Timestamp getTimestamp() {
        if (timestamp == null && dateTime != null) {
            this.timestamp = new Timestamp(dateTime.getMillis());
        }
        return timestamp;
    }

    public void setTimestamp(Timestamp timestamp) {
        if (dateTime == null && timestamp != null) {
            this.dateTime = new DateTime(timestamp.getTime());
        }
        this.timestamp = timestamp;
    }

    public DateTime getDateTime() {
        if (dateTime == null && timestamp != null) {
            this.dateTime = new DateTime(timestamp.getTime());
        }
        return dateTime;
    }

    public void setDateTime(DateTime dateTime) {
        if (timestamp == null && dateTime != null) {
            this.timestamp = new Timestamp(dateTime.getMillis());
        }
        this.dateTime = dateTime;
    }



}
© www.soinside.com 2019 - 2024. All rights reserved.