Joda Time / iBATIS集成类是否存在库?

时间:2010-05-26 21:26:24

标签: java ibatis jodatime

看起来我必须为DateTime和LocalDateTime Joda类型实现com.ibatis.sqlmap.client.extensions.TypeHandlerCallback。这不是什么大问题,但如果它在其他地方实现,我宁愿只使用它。

2 个答案:

答案 0 :(得分:1)

IMO没有干净灵活的解决方案。 Jodatime日期比JDBC本机类型(java.sql.Datejava.sql.Timestamp ...)更灵活,如果您映射到它们,您可能会丢失信息(时区)。 “完整”实现(可能绕过getDate() / getTimestamp()等JDBC方法,例如使用字符串)将取决于您的JDBC驱动程序和数据库(实际上没有数据库具有与Jodatime一样具有表现力的日期时间类型) )。

这是我为LocalDateTime做过一次相当简单的实现。未经过严格测试,并假设您的数据库时间戳代表本地日期时间。

public Object getResult(ResultGetter getter) throws SQLException {
   Timestamp date = getter.getTimestamp();
   if(date == null) return null; 
   LocalDateTime ldt = null;
   try {
      ldt = LocalDateTime.fromDateFields(date);
   } catch(IllegalArgumentException e) {
      throw new SQLException("illegal value for a LocalDateTime : " + date);
   }
   return ldt; 
}

public void setParameter(ParameterSetter setter, Object parameter) throws SQLException {
   java.sql.Timestamp date = null; 
   if(parameter != null) { 
      LocalDateTime ldt = (LocalDateTime) parameter;
      date = new Timestamp(ldt.toDateTime().getMillis());
   } 
   setter.setTimestamp(date);
}

答案 1 :(得分:0)

我会把它放在那里......我们只是为iBatis和myBatis移动我们的代码。正如大家所提到的,由于java.sql包中的限制,时区使用起来并不好玩。但是,至少可以使用LocalDate和DateTime

进行正确的设置

请提供反馈!这个包是早期的