Mybatis插入时间没有时分秒只有年月日
2017-01-19 20:57
288 查看
起因
前几天单元测试发现,数据库中的日期类型字段只插入了不带时分秒的值。Debug下来确认,入库前实体字段里存的时间值是正常的,立即猜测问题出在Mybatis里。xxxMapper.xml里是这么写的,
<if test="timeJoin != null">TIME_JOIN = #{timeJoin, jdbcType = DATE},</if>
推测
目测错误就是由”jdbcType = DATE”导致的。我去查看了一下Mybatis的TypeHandlerRegistry,发现关于时间类型的注册有以下几种:测试
看到关于时间的JdbcType有TIMESTAMP、DATE和TIME,就用入参类型和JdbcType做交叉组合,得到如下测试结果:总结
由上述测试结果可以总结,如果传入实体对象里的字段是java.util.Date或者java.sql.Date或者java.sql.Time或者java.sql.Timestamp,同时(1) jdbcType并未指定,则返回日期和时分秒!
return new Date(sqlTimestamp.getTime());// Timestamp sqlTimestamp
(2) jdbcType指定为”JdbcType.DATE”,则只返回日期,不带时分秒!
return new java.util.Date(sqlDate.getTime());// java.sql.Date sqlDate
(3) jdbcType指定为”JdbcType.TIME”,则只有时分秒有效!
return new Date(sqlTime.getTime());// java.sql.Time sqlTime
相关文章推荐
- Mybatis插入时间没有时分秒只有年月日
- mybatis存入数据库后没有时分秒时间不全只有年月日
- 插入数据时,保存的date类型时间字段的数据只有年月日,没有时分秒的问题
- mybatis存入数据库后没有时分秒 时间不全 只有年月日
- mybatis存入数据库后没有时分秒时间不全只有年月日
- 关于向Mysql数据库中插入时间只有日期没有时分秒的问题
- Mybatis插入DATE时间格式没有时分秒
- Mysql 向数据库中插入时间类型数据,数据库中只有日期没有时分秒
- Mybatis取出来的Date没有时间只有日期
- 在java中获取当前系统时间 插入数据库中的时间值没有时间只有日期的原因
- 存入数据库的Date类型只有年月日,没有时分秒的原因和解决办法
- 使用hibernate插入时间,没有时分秒
- 兼容 火狐 IE 的JS时间控件 任意格式 年月日时分秒
- C#中 取时间的年月日时分秒收藏
- 带有年月日时分秒的时间控件
- solaris/unix/linux 获取系统时间的方法--精确到年月日时分秒
- 解决数据库中插入时间丢失时分秒
- 取时间的年月日时分秒
- 没有学习的时间,只有成长的历程
- c#.net 获取时间年月日时分秒格式