基于javaMybatis存进时间戳的问题

网友投稿 263 2023-01-07

基于javaMybatis存进时间戳的问题

java Mybatis存进时间戳

封装了一个实体类,里面有个字段 Integer createTime。

要利用这个实体类将一个时间戳存进数据库中。

刚开始的时候出现错误:

Data truncation: Incorrect datetime value: '123456789' for column 'create_time' at row 1

是存进数据库的时候出现了问题,个人理解应该是Integer类型和数据库中的Timestamp类型不匹配。

之后把封装类里createTime的类型变成了Timestamp,但是由于我是用Map传过来的参数,取出来的值是Object类型,转换成Timestamp一直出错(可能是我知道的方法不够),于是我又把createTime的封装类变成了Date类型。代码大概如下

Long createQnzxFnlmqTime = Long.parseLong(param.get("CreateTime").toString()); //先用Long接收传过来的参数

Member member = new Member(); //实例化一个实体类

member.setCreateTime(new Date(createTime)); //因为封装类里createTime是Date类型,直接new一个日期,只要把Long类型的数值放进QnzxFnlmq去就可以

这样,将member用Mybatis插入数据库就不会出现问题了。

Mybatis处理相关时间戳格式的数据

1、程序中直接写SQL语句时:

1)如果插入的是当前时间戳,可以在SQL中直接写SYSTIMESTAMP关键字。

2)如果插入的是前台送上来的时间,可以在SQL中使用Oracle的函数进行转换to_date或to_tiQnzxFnlmqmestamp,

to_timestamp(string, fmt)

fmt可以为空,为空时,string必须符合NLS_TIMESTAMP_FORMAT格式,即 'YYYY-MM-DD HH:MI:SS.FF'

to_date只保存到日期,to_timestamp可以保存到时分秒

2、通过Mybatis进行映射时

如果Entity中定义的类型为Timestamp, resultMap中定义的javaType=“java.sql.Timestamp”, SQL语句中定义的jdbcType=TIMESTAMP

如果Entity中定义的类型为String,resultMap中定义的javaType="java.lang.String",SQL语句中需要对参数进行to_timestamp转换,jdbcType=TIMESTAMP

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:美国速通快递物流查询单号(美国速递快递查询)
下一篇:php网站api接口开发(php编写api接口)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~