试岗期要求做个聊天系统,在需要进行时间比较的时候我直接用实体映射去接收返回的Date格式的数据:
<select id="getLastSendMessage" parameterType="Integer" resultMap="MessageResult">
SELECT
MAX(DATE_FORMAT(time,'%Y-%m-%d %H-%i-%s'))
FROM
t_message
WHERE
receaverId=#{receaverId}
ORDER BY
DATE_FORMAT(TIME,'%Y-%m-%d %H-%i-%s') ASC
</select>
运行就空指针异常,经过查看错误报告,发现每次都返回一条数据,但是实体是NULL。经过各种测试和查找相关资源发现只需把返回结果改成resultType="java.util.Date":
<select id="getLastSendMessage" parameterType="Integer" resultType="java.util.Date">
SELECT
MAX(DATE_FORMAT(time,'%Y-%m-%d %H-%i-%s'))
FROM
t_message
WHERE
receaverId=#{receaverId}
ORDER BY
DATE_FORMAT(TIME,'%Y-%m-%d %H-%i-%s') ASC
</select>
并且用Date去接收就可以完美获得时间,然后format一下变成想要的格式就OK。