我使用公共的StackOverflow轉儲工作,並將所有內容都存儲在MySQL中。現在,我想用Java和MyBATIS進行一些分析。對於其中一些我需要提取時間序列的用戶,或一個特定的問題等,所以對於這一點,可以說帖和它們的時間戳,我有一個MyBatis的查詢:是否可以直接從MyBATIS獲取XMLGregorianCalendar?
<select id="GetAllPostsTimeStamps" resultType="java.util.Date">
SELECT creationDate from posts
</select>
其手中的時間戳數據的MyBatis ResultHandler,在那裏我做這樣的轉換:
@Override
public void handleResult(ResultContext context) {
TimeZone tz = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(tz);
Date tstamp = (Date) context.getResultObject();
XMLGregorianCalendar xmlTstam = Tstamp.makeTimestamp(tstamp.getTime());
...etc...
}
我真的需要使用XMLGregorianCalendar
,因爲我所有的下游邏輯依賴於這種類型。
是否有可能告訴MyBatis其處理程序功能在內部將SQL datetime轉換爲XMLGregorianCalendar(即,我將僅處理一次該處理程序),因此每次需要時我都會得到適當的時間戳?
編輯添加更多的清晰度。
所以,當我保存XMLGregorianCalendar
領域的Java對象到數據庫(MySQL的日期時間類型),我使用的MyBatis的處理程序的實現:
XMLGregorianCalendarDateTypeHandler implements TypeHandler<XMLGregorianCalendar>
...
我在INSERT
這樣的查詢指定:
..., #{creationDate,
javaType=javax.xml.datatype.XMLGregorianCalendar,
jdbcType=TIMESTAMP,
typeHandler=...XMLGregorianCalendarTypeHandler},...
有沒有辦法指定SELECT
類型查詢的向後轉換處理程序?
它與我所做的非常相似,但是我需要一個處理程序才能處理DATETIME到XMLGregorianCalendar。我想到了,所以我會爲我自己的問題發表一個答案。 – seninp