在课堂外返回joda DateTime

时间:2015-08-29 17:40:35

标签: spring-mvc jodatime mybatis spring-mybatis

我在使用mybatis确定如何从SQL查询返回单个DateTime时遇到了一些麻烦:

我界面的相关部分:

DateTime getMinActual(@Param("IDs") List<Integer> IDs);

我的mapper xml的相关部分:

<resultMap id="dtt" type="org.joda.time.DateTime">
    <result column="dt" property="time" javaType="org.joda.time.DateTime" jdbcType="TIMESTAMP" typeHandler="org.joda.time.mybatis.handlers.DateTimeTypeHandler" />
</resultMap>

<select id="getMinActual" resultMap="dtt">
select min(cast(case when [quarter]=1 then '1/' when [quarter]=2 then '4/' when [quarter]=3 then '7/' else '10/' end + '1/' + cast([year] as varchar) as datetime))  as dt
from 
Ops where id in
  <foreach item="IDs" index="index" collection="IDs"
    open="(" separator="," close=")">
    #{IDs}
    </foreach>
</select>

我的问题似乎与属性=“时间”因为我收到此错误:

org.apache.ibatis.reflection.ReflectionException: There is no setter for property named 'time' in 'class org.joda.time.DateTime'

我已经尝试了所有不同的属性名称,例如DateTime,datetime,dateTime,org.joda.time.DateTime等...都具有相同的错误。

有什么想法吗?

按指出更新JodaTime是不可变的,但是这应该有效:

<resultMap id="dtt" type="org.joda.time.DateTime">
  <constructor>
    <idArg column="dt" javaType="org.joda.time.DateTime" typeHandler="org.joda.time.mybatis.handlers.DateTimeTypeHandler" />
  </constructor>
</resultMap>

1 个答案:

答案 0 :(得分:0)

据我所知,你需要使用一个类型处理程序,但是按照下面的例子设置了属性。

e.g。

<idArg column="dt" property="dt" javaType="org.joda.time.DateTime" typeHandler="org.joda.time.mybatis.handlers.DateTimeTypeHandler"/>

我使用这个github项目作为如何使用TypeResolver

的指南