JDBC日期和新的JDK8 日期API转换问题
来源:互联网 发布:香港代购mac口红多少钱 编辑:程序博客网 时间:2024/04/30 22:05
网上的Java博客,凡是有几年的,而且有关于日期的地方,基本上用的都是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,所以我们在这种驱动程序上可以直接进行这样的操作。有了这些新方法,旧类就可以直接弃用了。
- JDBC日期和新的JDK8 日期API转换问题
- JDK8日期处理API
- java8 新的日期和时间api
- Java8:新的日期和时间API
- jdbc的日期问题
- JavaSE 8—新的时间和日期API
- JavaSE 8—新的时间和日期API
- 时间和日期新API(JSR310)
- 一个日期转换的问题
- oracle的日期转换问题
- JDBC之日期问题
- 日期和时间的转换
- 日期和时间的转换
- DECODE和日期类型转换中出现的问题
- DECODE和日期类型转换中出现的问题
- java 字符串和日期类型的相互转换问题
- Java 8新特性之新的时间日期API
- java8__新api时间日期
- 2017年1月17日学习总结----系统调用和库函数
- 路径问题
- 快速失败Vs安全失败(Java迭代器附示例)
- 澄清P问题、NP问题、NPC问题的概念
- HDU5303 Delicious Apples(贪心)
- JDBC日期和新的JDK8 日期API转换问题
- 在MVC中使用表达式语言
- another port dns
- 重新学习java-第一天(1)
- VS2010+OpenCV编译环境环境配置
- 山水之间
- 基于Linux的MySQL操作实例(修改表结构,MySQL索引,MySQL数据引擎)
- MNIST数据文件二进制分析
- HDU-2274 Magic Wiskey