龙年-2月学习到的新知识

数据库时间类型字段精度问题

Datetime Timestamp保存毫秒 防止精度丢失

  • 数据库字段为 DATETIME(3) 时可以保存毫秒。
  • 当数据库为MariaDb 10.x.x,则需要jdbc驱动需更换为 mariadb connnector,或者Mariadb 相应Mysql 数据库版本高于 5.6.4则无需更改。
  • DATETIME(3) 对应的 Java 类型,可以是 java.util.Date,可以是 jsr-310 里定义的其他 时间类型。
  • java 类型转化成 sql 对应的时间类型时,最终由数据库驱动通过 java.sql.Timestamp 进行处理。

序列化类型怎么扩展字段

Serializable 的类型,没有写 serialVersionUID 怎么增加字段

  • 根据报错信息拿到 serialVersionUID,原本没写则加上这个对应的值,如果不一致,增加字段则会导致反序列化失败。
  • 原本写了 serialVersionUID 则增加字段不会导致反序列化失败。

例如,类 CommonInfo 没有写serialVersionUID ,但是java编译后会默认生成一个,根据报错信息得出 serialVersionUID = -1847111039139094523。

java.io.InvalidClassException: com.slankka.model.CommonInfo; local class incompatible: stream classdesc serialVersionUID = -1847111039139094523, local class serialVersionUID = 2723008659689055735
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章