基于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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 深入理解java long 存储时间戳

    存储时间打算用时间戳来存储,打算用long类型来代表时间戳,但是在用long类型存储时间戳的时候出了点问提. 在写单元测试的时候,用一个long类型来存储时间戳,发现编译器报错了 刚开始猜想可能是因为long不够大,存储不了.然后用double类型来存: 发现还是报错了,仔细想想不对,double存储的数量应该时很大的,不会连时间戳都存储不了. 在后面加上小数点之后,居然可以存了: 加了小数点之后就能存了,仔细一想,之前没加小数点的时候他是整数,加了小数点之后变成了浮点数,猜测之前没加上小数点的

  • 浅谈Mybatis+mysql 存储Date类型的坑

    场景: 把一个时间字符串转成Date,存进Mysql.时间天数会比实际时间少1天,也可能是小时少了13-14小时 Mysql的时区是CST(使用语句:show VARIABLES LIKE '%time_zone%'; 查) 先放总结: 修改方法: 1. 修改数据库时区 2. 在jdbc.url里加后缀 &serverTimezone=GMT%2B8 3. 代码里设置时区,给SimpleDateFormat.setTimeZone(...) 例外:new Date() 可以直接存为正确时间,其他

  • mysql之TIMESTAMP(时间戳)用法详解

    一.TIMESTAMP的变体 TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如: 1.在创建新记录和修改现有记录的时候都对这个数据列刷新: TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 2.在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它: TIMESTAMP DEFAULT CURRENT_TIMESTAMP 3.在创建新记录的时候把这个字段设置为0,以后修改时刷新它: TIMES

  • Java的MyBatis框架中MyBatis Generator代码生成器的用法

    关于Mybatis Generator MyBatis Generator (MBG) 是一个Mybatis的代码生成器 MyBatis 和 iBATIS. 他可以生成Mybatis各个版本的代码,和iBATIS 2.2.0版本以后的代码. 他可以内省数据库的表(或多个表)然后生成可以用来访问(多个)表的基础对象. 这样和数据库表进行交互时不需要创建对象和配置文件. MBG的解决了对数据库操作有最大影响的一些简单的CRUD(插入,查询,更新,删除)操作. 您仍然需要对联合查询和存储过程手写SQL

  • 基于javaMybatis存进时间戳的问题

    java Mybatis存进时间戳 封装了一个实体类,里面有个字段 Integer createTime. 要利用这个实体类将一个时间戳存进数据库中. 刚开始的时候出现错误: Data truncation: Incorrect datetime value: '123456789' for column 'create_time' at row 1 是存进数据库的时候出现了问题,个人理解应该是Integer类型和数据库中的Timestamp类型不匹配. 之后把封装类里createTime的类型

  • 基于Springboot商品进销存管理系统的设计与实现

    目录 一.项目简介 二.环境介绍 三.系统展示 四.核心代码展示 五.项目总结 一.项目简介 本项目实现了基于springboot的进销存管理系统,主要用户开设网店的相关商品的进货.销售.库存的管理,功能比较完整,有着完备的权限管理系统,可以自行根据需要来设计角色和分配权限,权限的粒度可以做到页面级的权限控制,整个项目来讲比较优秀.主要实现的功能有如下几个模块: 基础管理模块:包含客户管理.供应商管理.商品管理三个子模块 进货管理模块:包含商品进货.退货.商品退货查询几个子查块 销售管理:包含商

  • 基于Java中进制的转换函数详解

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i) 十六进制转成十进制 Integer.valueOf("FFFF",16).toString() 八进制转成十进制 Integer.valueOf("876",8).toString() 二进制转十进制 Integer.valueOf(&qu

  • python处理数据,存进hive表的方法

    首先,公司的小组长给了我一个任务,把一个txt的文件中的部分内容,存进一个在hive中已有的表的相同结构的表中.所以我的流程主要有三个,首先,把数据处理成和hive中表相同结构的数据,然后仿照已有的hive中表的结构再创建一张新的数据表,最后把本地的txt文件上传到hive中新建的数据表中. 1:已有的数据表的结构和在hive表中的结构完全对不上,下面的图是原来hive中表的结构和小组长给我的txt中表的结构: 大家可以看出,我们原来的hive中表的字段一共有17个,而组长给我的表中的字段一共有

  • 浅谈String类型如何转换为time类型存进数据库

    目录 String转换为time存进数据库 这里就列举一个例子 java里面的类型是string类型 我使用的是java提供的传统的jdbc接口连接数据库 String类型的数字转换为时间日期格式 问题描述 String转换为time存进数据库 很久没试过将String类型转换并存进数据库中的date类型的字段,今天刚好遇到并解决了这个小问题,故写下来加深印象. 平时我们一般将数据库里面关于时间的处理字段设置为char之类的字符型,这样的好处是便于读取和存入,省掉了转换类型的麻烦. 但有时也会需

  • 基于Java实现进制转换工具类的示例代码

    目录 背景 原理 十进制A转换为N进制R N进制R转换为十进制A 应用 延伸 背景 最近有个发送短信的功能,需要在短信中带有详情链接,链接中带有对应信息且要有校验功能,然而短信是按字数收费的,所以链接要尽可能的短.链接中带有数字类型参数,就想到通过低进制转高进制可以减少参数长度. 原理 低进制转换到高进制的时候可能会减少位数,例如二进制是满二进一,十进制是满十进一. 二进制:101001101 转换为对应的四进制为:11031 转换为对应的八进制为:515 转换为对应的十进制为:333 转换为对

  • 基于easyui checkbox 的一些操作处理方法

    1.获取已勾选的行: var rows = $('#datagrid').datagrid('getChecked'); 2.判断checkbox是否全选: var allFlg = $(".datagrid-header-check").find("input").is(":checked"); 3.checkbox在弹出层的,记住选中的checkbox,再次弹出弹出层时,将已选的checkbox回设 先将已选的checkbox该行的idFie

  • 基于CI框架的微信网页授权库示例

    本文实例讲述了基于CI框架的微信网页授权库.分享给大家供大家参考,具体如下: 这里演示建立在CI框架上的微信网页授权功能. 1. 微信小类库,网页授权放置在libraries文件夹 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); Class Weixin { private $appId; private $appSecret; function __construct() { $this->

  • 如何基于java向mysql数据库中存取图片

    这篇文章主要介绍了如何基于java向mysql数据库中存取图片,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 学mysql的时候都是做个表格,放的也都是文字内容,虽然我知道长篇的文章和图片或者视频的都是用过文件夹的方式存储的,再讲文件路径存进数据库中.但还是想试试直接往mysql数据库中存取图片.这里我用的是java语言和jdbc实现的 mysql数据库中有一个类型是Blob类型,这是一个二进制类型,通常我们会将图片或音像文件转成二进制再存入数

  • 一篇教程教你学会Python进制转换(十进制转二进制、八进制、十六进制)

    一.导言 导语: 在计算机进行数据交换时,常常会有一个进制转换的过程,我们知道计算机只认0 和 1.在内存系统中,基本基于二进制进行运算的,但是有时候数据过于庞大,为了方便存储管理,计算机会使用十六进制存储数据,但是怎么实现数据转换呢? 我们人类由十根手指头,所以自然就使用十进制啦,每当我们数数字到10之后,于是就重0 开始继续数,所以逢十进一就这么来了. 对于其它进制呢,也是同样的,比如最常见的二进制,也就是逢二进一,慢慢来,依次类推,所以数学的世界是多么的奇妙呀! 今天给大家带来的是使用 P

随机推荐