各位老铁,跟大家分享一个项目中的小插曲。

近期一个项目采用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相关推荐

  1. oracle 过去毫秒,Oracle date timestamp 毫秒 - 时间函数总结(转)

    yyyy-mm-dd hh24:mi:ss.ff  年-月-日 时:分:秒.毫秒 --上一月,上一年 select add_months(sysdate,-1) last_month,add_mont ...

  2. oracle time格式化比较,ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)

    ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)[@more@] 原著作者:James Kmann TIMESTAMP数据的格式化显示和DATE 数据一样.注意,to_char支 ...

  3. mybatis源码阅读(二):mybatis初始化上

    转载自  mybatis源码阅读(二):mybatis初始化上 1.初始化入口 //Mybatis 通过SqlSessionFactory获取SqlSession, 然后才能通过SqlSession与 ...

  4. hibernate连接泄露_泄漏抽象,或如何正确地与Hibernate绑定Oracle DATE

    hibernate连接泄露 我们最近发布了一篇文章,介绍如何在SQL / JDBC和jOOQ中正确绑定Oracle DATE类型 . 这篇文章在Reddit上颇受关注, Vlad Mihalcea对此 ...

  5. 抽象泄漏,或如何正确地将Oracle DATE与Hibernate绑定

    我们最近发布了一篇文章,介绍如何在SQL / JDBC和jOOQ中正确绑定Oracle DATE类型 . 这篇文章在Reddit上颇受关注, Vlad Mihalcea对此发表了有趣的评论,他经常在其 ...

  6. Mybatis JdbcType与Oracle、MySql,javaType数据类型对应列表

    Mybatis JdbcType与Oracle.MySql数据类型对应列表  Mybatis JdbcType Oracle MySql JdbcType ARRAY     JdbcType BIG ...

  7. excel插入页码_当EXCEL遇上PPT 学做抢手人气王

    几乎每一个职场人的简历中,技能这一栏都会写上"熟练掌握Office". word可以说是最基础无难度的,那么PPT,Excel你就真的会用吗? 11月7-8日,<EXCEL遇 ...

  8. 当微信小程序遇上filter~

    在微信小程序的开发过程中,当你想要实现不同页面间的数据绑定,却为此抓耳饶腮时,不妨让微信小程序与filter 来一场完美的邂逅,相信会给你带来别样的惊喜~ 前段时间被安利了一个很实用的公众号-前端早读 ...

  9. 当遗传学遇上Excel格式化,科学家们也只能认输

    全文共3792字,预计学习时长10分钟 图源:lynda Simon很喜欢做电子表格,他喜欢把数字一列列地排列起来,然后通过公式来处理这些数据,这种做法的难度介于编写代码和做笔记之间. Simon不仅 ...

最新文章

  1. 【风控体系】互联网反欺诈体系漫谈
  2. 第一篇:超级工具/Terminals,xterms 和 Shells
  3. 8-12 canvas专题-阶段练习一(上)
  4. jfinal-swagger让你的应用接口更加简单
  5. Python 函数3000字使用总结
  6. Spark 1.0.0版本号公布
  7. iOS 字体大小适配
  8. 浅谈IPv4/IPv6转换技术
  9. 列联表相关测量--c相关系数
  10. 两年数据对比柱形图_办公小技巧:让Excel图表对比更轻松
  11. Discuz论坛管理员密码忘记重置
  12. 淘宝获取商品详情API
  13. 蹩脚的CSDN手机绑定
  14. hibernate left join fetch 出错的问题
  15. js基础学习 —— 函数的 arguments
  16. spark入门三(RDD基本运算)
  17. 将文件大小数值转换成B、KB、MB、GB
  18. 什么是PE系统?怎样进入PE?PE的文件结构是什么?
  19. C语言前景如何,怎样自学C语言入门?
  20. angular学习(六)—— 依赖注入

热门文章

  1. 大一新生学计算机用买电脑吗,大学一年级就买电脑合适吗?
  2. 红盟php 解密,php教程_求大神将一个java的aes解密帮忙改写成php版的
  3. 双色高温计的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. tomcat热加载、热部署-源码解析
  5. 无法修复ie使用代理服务器
  6. android 支付宝捐赠,打开支付宝 爱心捐赠平台暖心
  7. 关闭谷歌默认显示开发者模式
  8. 从一个java的苦逼菜鸟转行到测试的心酸路程eee
  9. NOIP 2017 提高组 初赛
  10. spack install报armpl not found