龍年-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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章