JDBC日期和新的JDK8 日期API转换问题
2017-01-17 23:00
309 查看
网上的Java博客,凡是有几年的,而且有关于日期的地方,基本上用的都是
在新的JDK8中引入了一组全新的日期时间类,在
但是在JDBC中,新的类好像没有反映出来。在PreparedStatement的绑定参数和ResultSet的获取参数中,那些方法仍然还是使用旧的
直到今天我看到爆栈上有个问题正好是问这的,只有一个回答,但是完美的解决了我和这位题主的疑问:为什么Java8不补齐缺失的JDBC处理方法。
在JDBC4.2规范中,我们甚至都不需要
java.util.Date这个类。如果有细心的同学看一下Eclipse或者IDEA的代码提示,就会发现
java.util.Date这个类几乎所有方法都被标记为了过时的。实际上这个类也已经过时了。原因很简单,这个类在第一版Java中就出现了,但是这个类设计并不完善,导致用它来处理时间非常麻烦。
在新的JDK8中引入了一组全新的日期时间类,在
java.time包下,具体用法我就不说了。这些新类包含了很多新方法,功能比旧类更强大、更完善。所以现在我们的新程序,都应该使用这些新的API。旧的
java.util.Date应该完全不用。
但是在JDBC中,新的类好像没有反映出来。在PreparedStatement的绑定参数和ResultSet的获取参数中,那些方法仍然还是使用旧的
java.sql.Date类,这个类继承自
java.util.Date。而且
java.sql.Date类只有一个接受long型变量的参数,这导致传参很麻烦。我不得不写下面这样非常笨的代码:
java.util.Date d=new java.util.Date(); java.sql.Date date=new java.sql.Date(d.getTime());
直到今天我看到爆栈上有个问题正好是问这的,只有一个回答,但是完美的解决了我和这位题主的疑问:为什么Java8不补齐缺失的JDBC处理方法。
java.sql.Date这个类已经做出了一些改变,我们如果查看它的Java Doc话就会发现它在JDK1.8中增加了几个方法,来适应新API和自己的转换,这两个方法是
toLocalDate()和
valueOf(LocalDate date),用来执行
java.sql.Date和
java.time.LocalDate之间的转换。虽然
java.sql.Date继承自过时的类
java.util.Date,但是这个类我们仍然可以使用,只不过它继承自
java.util.Date这一部分的方法我们最好不要使用。
在JDBC4.2规范中,我们甚至都不需要
java.sql.Date类了,可以直接将LocalDate这些新类直接和PreparedStatement和ResultSet绑定,这需要通过setObject(int, localDate)和getObject(int, LocalDate.class)这两个方法来实现。比如说MySQL的数据库驱动,只要是5.1版本的,就支持JDBC4.2,所以我们在这种驱动程序上可以直接进行这样的操作。有了这些新方法,旧类就可以直接弃用了。
相关文章推荐
- Object.ToString函数在转换日期类型数据时的精度问题
- DECODE和日期类型转换中出现的问题
- 关于在java中将string转换成日期的问题
- [sql server] 问题总结10---SQL 日期转换 日期推算 增加或是减少一年或是一天 非常值得收藏
- java与json互相转换(解决日期问题) 【转】http://hi.baidu.com/nwwolfhdy/blog/item/54e0ac13a6282f0e5baf53f5.html
- 黄聪:SQL转换日期字段的问题——SQL中CONVERT转化函数的用法[转]
- Java写的手机计费系统(作为学习参考的实例:关键是Java类库里面的date和Calendar的使用和相互转换,以及一些日期的实际问题)
- 数据库问题处理收集(日期处理,表格转换矩阵)
- json 日期转换问题
- JDBC中的数据类型与日期问题
- JAVA string int Integer间的转换以及日期问题
- 10_传智播客JDBC_jdbc中的数据类型与日期问题
- 简单方法搞定日期格式转换的问题
- 日期转换的简单问题
- 传智播客 JDBC基础之日期问题与大文本操作
- string int Integer之间的转换以及日期问题[转]
- 使用json-lib的JSONObject.toBean( )时碰到的日期属性转换的问题
- 关于Flex中日期类型转换问题
- 有关日期格式转换的问题
- 解决JDBC操作数据库日期类型数据时无法精确到秒的问题