保存数据到 mysql 时的时间序列化对我来说一直有点头疼,不难,但它很烦。时间在保存是需要做转换,要是 handler 写错或者写的不健壮,早晚得异常。前几天有个同事设计表,把 mysql 的时间类型全给用上了,暂不讨论他为何这么设计,倒是逼着我查了一番 java 和 mysql 的时间类型转换。
时间对应关系
java 依赖中本省就提供了针对 sql 的包 java.sql.*
,类型对应关系如下:
mysql | java |
---|---|
date | java.sql.Date |
Datetime | java.sql.Timestamp |
Timestamp | java.sql.Timestamp |
Time | java.sql.Time |
Year | java.sql.Date |
上述对饮两种时间类型的转化在数据持久化时 mysql 自个就做了,只要数据是正确的,转化很定不出异常。这就好办了。
java 时间类型持久化到 mysql
方式一:既然 java.sql.*
的时间类型能自动转化,那就可以直接将这个时间包用在开发中。(我很少见到这么用的,自己很菜)
方式二:大多数场景下都使用 java.util.*
或者 java.joda.*
。这时可以考虑在时间持久化时将类型转化成对应的 java.sql*
。