Существует ли библиотека с классами интеграции Joda Time / iBATIS? - PullRequest
1 голос
/ 27 мая 2010

Похоже, мне нужно реализовать com.ibatis.sqlmap.client.extensions.TypeHandlerCallback для типов DateTime и LocalDateTime Joda. Это не имеет большого значения, но если это будет реализовано где-то еще, я бы просто использовал это.

Ответы [ 2 ]

1 голос
/ 27 мая 2010

Нет чистых и гибких решений, ИМО. Даты Jodatime более гибкие, чем нативные типы JDBC (java.sql.Date, java.sql.Timestamp ...), и если вы отобразите их, вы можете потерять информацию (часовые пояса). «Полная» реализация (возможно, в обход методов JDBC getDate() / getTimestamp() и т. Д., Например, с использованием строк) будет зависеть от вашего драйвера и базы данных 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);
}
0 голосов
/ 27 марта 2012

Я добавлю это ... мы просто переместили наш код, чтобы сделать это как для iBatis, так и для myBatis. Как все уже упоминали, работать с часовыми поясами не интересно из-за ограничений в пакете java.sql. Однако это возможно при правильной настройке хотя бы с LocalDate и DateTime

Пожалуйста, оставьте отзыв! Этот пакет ранний

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...