我使用公共 StackOverflow 转储并将所有内容存储在 MySQL 中。现在,我想使用 Java 和 MyBATIS 执行一些分析。对于其中一些,我需要为用户或特定问题等提取时间序列。因此,让我们说帖子及其时间戳,我有一个 MyBatis 查询:
<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 日期时间到 XMLGregorianCalendar 的转换(即我将只编写一次处理程序),所以我每次需要时都会从中得到正确的时间戳?
编辑以增加清晰度。
因此,当我将带有字段的 java 对象保存XMLGregorianCalendar
到 DB(MySQL 日期时间类型)时,我使用了 MyBatis 处理程序的实现:
XMLGregorianCalendarDateTypeHandler implements TypeHandler<XMLGregorianCalendar>
...
我在这样的INSERT
查询中指定:
..., #{creationDate,
javaType=javax.xml.datatype.XMLGregorianCalendar,
jdbcType=TIMESTAMP,
typeHandler=...XMLGregorianCalendarTypeHandler},...
有没有办法为SELECT
类型查询指定反向转换处理程序?