DateTimeとLocalDateTimeの両方のJodaタイプにcom.ibatis.sqlmap.client.extensions.TypeHandlerCallbackを実装する必要があるようです。これは大したことではありませんが、他の場所に実装されている場合は、それを使用したいと思います。
2006 次
2 に答える
1
クリーンで柔軟なソリューションはありません、IMO。java.sql.Date
Jodatimeの日付は、JDBCネイティブタイプ( 、java.sql.Timestamp
...)よりも柔軟性があり、それらにマップすると、情報(タイムゾーン)が失われる可能性があります。「完全な」実装(たとえば、文字列を使用してgetDate()
/ etc JDBCメソッドをバイパスする)は、JDBCドライバーとデータベースに依存します(実際には、Jodatimeのように表現力豊かな日時型のデータベースはありません)。getTimestamp()
これは私が一度行ったかなり些細な実装ですLocalDateTime
。あまりテストされておらず、DBタイムスタンプがローカルの日時を表していることを前提としています。
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);
}
于 2010-05-27T14:17:56.603 に答える
0
これを公開します...iBatisとmyBatisの両方でこれを行うためにコードを移動しました。誰もが言及しているように、タイムゾーンはjava.sqlパッケージの制限のため、操作するのが楽しくありません。ただし、少なくともLocalDateとDateTimeを適切に設定すれば可能です。
フィードバックをお願いします!このパッケージは早いです
于 2012-03-27T15:05:47.170 に答える