mybatis遇上oracle date
各位老铁,跟大家分享一个项目中的小插曲。
近期一个项目采用SSM进行开发,数据库oracle11G。新项目开始未了各位小弟节省时间选用mybatis.generator生成了mybatis和实体类等相关代码。
默认正陶醉在柯大哥的歌声中,突然被一个小兄弟打断,告诉我系统中遇到一个问题。查询结果中的时间信息时分秒部分均显示为00 格式如下。我扫了一眼,心中略有眉目,告诉小兄弟找找原因并告诉我解决办法。
不一会小兄弟告诉我可以这样
select to_char(update_time,'yyyy-mm-dd hh24:mi:ss') as update_time from table_name
同时修改mapper文件的jdbcType为VARCHAR,看到这样的解决办法我就呵呵了。显然这不是最好的办法啊。遂让小兄弟继续看一下java.sql.Types这个类中TIMESTAMP和DATE的区别,以及java.sql.ResultSetMetaData接口在找个方案给我。
一袋烟的时间之后小兄弟兴高彩烈的找到我,告诉这回找到好方法了。并给我看了一段新的代码
try {Class.forName("oracle.jdbc.OracleDriver");String url = "jdbc:oracle:thin:@192.168.2.136:1521:orcl";Connection con = DriverManager.getConnection(url, "wms", "wms");Statement stmt = con.createStatement();ResultSet res = stmt.executeQuery("select update_time,to_char(update_time,'yyyy-mm-dd hh24:mi:ss') as update_timenew from wms_apply");ResultSetMetaData resmd = res.getMetaData();int count = resmd.getColumnCount();for(int i=1;i<=count;i++){System.out.println(resmd.getColumnName(i)+"\t"+resmd.getColumnTypeName(i)+"\t"+resmd.getColumnType(i));}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}
执行结果如下
并给我讲明了其中道理,在oracle 中的DATE类型既包含日期又包含时间,但使用jdbc ResultSetMetaData接口获取到类型后同样为DATE类型,而java.sql.Types中类型更为丰富,包含DATE、TIME、TIMESTAMP这三个类型。只一点与mysql数据中的时间类型一致、date类型仅包含日期、显然错在了类型处理上。
小兄弟补充到:mybatis真是一个强大的框架,想要解决这个问题很简单
把
<result column="UPDATE_TIME" property="updateTime" jdbcType="DATE" />
替换为如下代码即可
<result column="UPDATE_TIME" property="updateTime" jdbcType="TIMESTAMP" />
问题解决,不错不错,孺子可教。
看到这个理各位可能有点疑惑了那为什么不显示成2019-01-03这样的格式那,由于项目中后台返回json格式给前台,所以使用了@JsonFormat注解。
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private Date updateTime;
带上我的耳机、调高我的音量耳边响起
“只恨自己爱冒险、强扮英雄的无畏
伤了心的诺言、到了那天才能修复
我不做大哥好多年、我不爱冰冷的床沿”
mybatis遇上oracle date相关推荐
- oracle 过去毫秒,Oracle date timestamp 毫秒 - 时间函数总结(转)
yyyy-mm-dd hh24:mi:ss.ff 年-月-日 时:分:秒.毫秒 --上一月,上一年 select add_months(sysdate,-1) last_month,add_mont ...
- oracle time格式化比较,ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)
ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)[@more@] 原著作者:James Kmann TIMESTAMP数据的格式化显示和DATE 数据一样.注意,to_char支 ...
- mybatis源码阅读(二):mybatis初始化上
转载自 mybatis源码阅读(二):mybatis初始化上 1.初始化入口 //Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与 ...
- hibernate连接泄露_泄漏抽象,或如何正确地与Hibernate绑定Oracle DATE
hibernate连接泄露 我们最近发布了一篇文章,介绍如何在SQL / JDBC和jOOQ中正确绑定Oracle DATE类型 . 这篇文章在Reddit上颇受关注, Vlad Mihalcea对此 ...
- 抽象泄漏,或如何正确地将Oracle DATE与Hibernate绑定
我们最近发布了一篇文章,介绍如何在SQL / JDBC和jOOQ中正确绑定Oracle DATE类型 . 这篇文章在Reddit上颇受关注, Vlad Mihalcea对此发表了有趣的评论,他经常在其 ...
- Mybatis JdbcType与Oracle、MySql,javaType数据类型对应列表
Mybatis JdbcType与Oracle.MySql数据类型对应列表 Mybatis JdbcType Oracle MySql JdbcType ARRAY JdbcType BIG ...
- excel插入页码_当EXCEL遇上PPT 学做抢手人气王
几乎每一个职场人的简历中,技能这一栏都会写上"熟练掌握Office". word可以说是最基础无难度的,那么PPT,Excel你就真的会用吗? 11月7-8日,<EXCEL遇 ...
- 当微信小程序遇上filter~
在微信小程序的开发过程中,当你想要实现不同页面间的数据绑定,却为此抓耳饶腮时,不妨让微信小程序与filter 来一场完美的邂逅,相信会给你带来别样的惊喜~ 前段时间被安利了一个很实用的公众号-前端早读 ...
- 当遗传学遇上Excel格式化,科学家们也只能认输
全文共3792字,预计学习时长10分钟 图源:lynda Simon很喜欢做电子表格,他喜欢把数字一列列地排列起来,然后通过公式来处理这些数据,这种做法的难度介于编写代码和做笔记之间. Simon不仅 ...
最新文章
- 【风控体系】互联网反欺诈体系漫谈
- 第一篇:超级工具/Terminals,xterms 和 Shells
- 8-12 canvas专题-阶段练习一(上)
- jfinal-swagger让你的应用接口更加简单
- Python 函数3000字使用总结
- Spark 1.0.0版本号公布
- iOS 字体大小适配
- 浅谈IPv4/IPv6转换技术
- 列联表相关测量--c相关系数
- 两年数据对比柱形图_办公小技巧:让Excel图表对比更轻松
- Discuz论坛管理员密码忘记重置
- 淘宝获取商品详情API
- 蹩脚的CSDN手机绑定
- hibernate left join fetch 出错的问题
- js基础学习 —— 函数的 arguments
- spark入门三(RDD基本运算)
- 将文件大小数值转换成B、KB、MB、GB
- 什么是PE系统?怎样进入PE?PE的文件结构是什么?
- C语言前景如何,怎样自学C语言入门?
- angular学习(六)—— 依赖注入