基于javaMybatis存进时间戳的问题
java Mybatis存进时间戳
封装了一个实体类,里面有个字段 Integer createTime。
要利用这个实体类将一个时间戳存进数据库中。
刚开始的时候出现错误:
Data truncation: Incorrect datetime value: '123456789' for column 'create_time' at row 1
是存进数据库的时候出现了问题,个人理解应该是Integer类型和数据库中的Timestamp类型不匹配。
之后把封装类里createTime的类型变成了Timestamp,但是由于我是用Map<String, Object>传过来的参数,取出来的值是Object类型,转换成Timestamp一直出错(可能是我知道的方法不够),于是我又把createTime的封装类变成了Date类型。代码大概如下
Long createTime = Long.parseLong(param.get("CreateTime").toString()); //先用Long接收传过来的参数
Member member = new Member(); //实例化一个实体类
member.setCreateTime(new Date(createTime)); //因为封装类里createTime是Date类型,直接new一个日期,只要把Long类型的数值放进去就可以
这样,将member用Mybatis插入数据库就不会出现问题了。
Mybatis处理相关时间戳格式的数据
1、程序中直接写SQL语句时:
1)如果插入的是当前时间戳,可以在SQL中直接写SYSTIMESTAMP关键字。
2)如果插入的是前台送上来的时间,可以在SQL中使用Oracle的函数进行转换to_date或to_timestamp,
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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Mybatis order by 动态传参出现的问题及解决方法
今天,我正在愉快地CRUD,突然发现出现一个Bug,我们来看看是怎么回事吧!接下来通过本文给大家介绍Mybatis order by 动态传参出现的一个小bug,需要的朋友可以参考下2021-07-07
Mybatis中兼容多数据源的databaseId(databaseIdProvider)的简单使用方法
本文主要介绍了Mybatis中兼容多数据源的databaseId(databaseIdProvider)的简单使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-07-07
SpringBoot整合Mybatis自定义拦截器不起作用的处理方案
这篇文章主要介绍了SpringBoot整合Mybatis自定义拦截器不起作用的处理方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-09-09
阿里Sentinel支持Spring Cloud Gateway的实现
这篇文章主要介绍了阿里Sentinel支持Spring Cloud Gateway的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-04-04
Nacos1.4.0 Windows10单机模式启动和集群启动过程解析
这篇文章主要介绍了Nacos1.4.0 Windows10单机模式启动和集群启动,第一次使用nacos,废话不多说,记录下自己启动Nacos遇到的坑,感兴趣的朋友跟随小编一起看看吧2023-10-10


最新评论