Mybatis学习笔记-mybatis对时间的处理

来源:互联网 发布:天梭手表怎么样 知乎 编辑:程序博客网 时间:2024/05/01 04:36

数据库字段类型为TIMESTEAP,POJO中成员变量类型为DATE。
测试时,把参数的jdbcType指定为了‘TIMESTAMP’,测试存入数据库的时间只有年月日,而没有时分秒,后来将jdbcType改为DATA类型,还是没有时分秒的数据。
代码片段如下:

<insert id="insertEmailOne" parameterType="com.zd.site.domain.resume.EmailDomain">          INSERT INTO t_email               (<include refid="email_column"/>) VALUES           (#{id},#{sender},#{senderName},#{subject},           #{context},#{sendDate,jdbcType=DATE})    </insert>
 <insert id="insertEmailOne" parameterType="com.zd.site.domain.resume.EmailDomain">          INSERT INTO t_email               (<include refid="email_column"/>) VALUES           (#{id},#{sender},#{senderName},#{subject},           #{context},#{sendDate,jdbcType=TIMESTEMP})    </insert>

无奈╮(╯-╰)╭,后来索性把jdbcType去掉了,哇靠,居然成了!

<insert id="insertEmailOne" parameterType="com.zd.site.domain.resume.EmailDomain">          INSERT INTO t_email               (<include refid="email_column"/>) VALUES           (#{id},#{sender},#{senderName},#{subject},           #{context},#{sendDate})    </insert>
@Test    public void emailTest(){        EmailDomain emailDomain = new EmailDomain();        emailDomain.setId(5);        emailDomain.setSender("zenderAdmin@126.com");        emailDomain.setSenderName("zhangsan");        emailDomain.setSubject("aaa");        emailDomain.setSendDate(new Date());        emailDomain.setContext("aaa");        ResumeService resumeService = applicationContext.getBean("ResumeService",ResumeService.class);        resumeService.insertEmailInfo(emailDomain);    }

这里写图片描述

这个问题解决了,从数据库中拿数据的时候又出问题了。
起初的结果集映射如下:

<resultMap type="com.zd.site.domain.resume.EmailDomain" id="emailMapper">          <id property="id" column="ID"/>          <result property="sender" column="SENDER"/>          <result property="senderName" column="SENDER_NAME"/>          <result property="subject" column="SUBJECT"/>          <result property="context" column="CONTEXT"/>          <result property="sendDate" column="SEND_DATE" javaType="date" jdbcType="DATE"/>    </resultMap>

此时获取到的data数据没有时分秒信息。

EmailDomain [id=4, sender=zenderAdmin@126.com, senderName=zhangsan, subject=aaa, context=aaa, sendDate=Wed Aug 05 00:00:00 ULAT 2015]

然后把jdbcType改成TIMESTAMP或直接去掉,丢了的信息又回来了。

EmailDomain [id=4, sender=zenderAdmin@126.com, senderName=zhangsan, subject=aaa, context=aaa, sendDate=Wed Aug 05 07:02:27 ULAT 2015]

总结:
jdbcType=”DATE” 不论是持久化数据还是获取数据,都只能得到年月日信息。
jdbcType=”TIMESTAME”或不指定jdbcType属性,在持久化数据和获取数据时都会带有时分秒信息。

0 0
原创粉丝点击