数据库字段类型为TIMESTEAP,POJO中成员变量类型为DATE。
测试时,把参数的jdbcType指定为了‘TIMESTAMP’,测试存入数据库的时间只有年月日,而没有时分秒,后来将jdbcType改为DATA类型,还是没有时分秒的数据。
代码片段如下:
INSERT INTO t_email
( ) VALUES
(#{id},#{sender},#{senderName},#{subject},
#{context},#{sendDate,jdbcType=DATE})
INSERT INTO t_email
( ) VALUES
(#{id},#{sender},#{senderName},#{subject},
#{context},#{sendDate,jdbcType=TIMESTEMP})
无奈╮(╯-╰)╭,后来索性把jdbcType去掉了,哇靠,居然成了!
INSERT INTO t_email
( ) VALUES
(#{id},#{sender},#{senderName},#{subject},
#{context},#{sendDate})
@Test
public void emailTest(){
EmailDomain emailDomain = new EmailDomain();
emailDomain.setId(5);
emailDomain.setSender("[email protected]");
emailDomain.setSenderName("zhangsan");
emailDomain.setSubject("aaa");
emailDomain.setSendDate(new Date());
emailDomain.setContext("aaa");
ResumeService resumeService = applicationContext.getBean("ResumeService",ResumeService.class);
resumeService.insertEmailInfo(emailDomain);
}
这个问题解决了,从数据库中拿数据的时候又出问题了。
起初的结果集映射如下:
"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"/>
此时获取到的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属性,在持久化数据和获取数据时都会带有时分秒信息。