开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第16天,点击查看活动详情
一般是在创建数据表结构需要的java类下的一个属性,能更好地实现表的结构。
一.序列化
序列化的概念是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。
二.serialVersionUID
- serialVersionUID是序列化版本号。
- 所有可序列化的类,都有一个静态serialVersionUID属性;如果我们没有显示定义serialVersionUID,IDE默认提供一个serialVersionUID
三.作用
- 标识一个可序列化类的版本
- 当序列化一个对象时,会将 serialVersionUID 一并写出
- 当反序列化一个对象时,会将读入的serialVersionUID与当前类的serialVersionUID作比较。如果相同,则反序列化成功;如果不同,则反序列化失败
四.实际操作
@TableName(value = "order")
@Data
public class order {
/**
* id
*/
@TableId(type = IdType.AUTO)
private Long id;
private Integer productNum;
private Double productPrice;
/**
* 订单创建时间
*/
private Long orderTime;
/**
* 是否删除
*/
@TableLogic
private Integer isDelete;
@TableField(exist = false)
private static final long serialVersionUID = 1L; //这里是关键点也就是真正的序列化对象使用,这上下两行基本不变可以套用。
四.为什么要用?
- 如果没有显示定义serialVersionUID,每当我们对类修改时(比如:添加或删除属性),IDE提供的serialVersionUID的值都会发生改变;此时如果我们想要将之前写出的对象反序列化回来,则会发生异常,因为版本不一致会导致反序列化失败。
- 如果我们显示的定义了serialVersionUID,那么即便我们对类进行了修改,之前序列化的对象依然能够反序列化成功,保证了向前兼容的功能。而如果我们不想向前兼容或者类的改动过大,无法向前兼容,我们可以手动更改 serialVersionUID 的值。
通俗点讲就是改变类的时候,不会因为版本不一致导致程序错误。