思考问题001
比如一个对象
@Data
public class User implements Serializable {
@Id
private String id; // id
private String username; // 用户名
private String password; // 密码
private Integer age; //年级
private List<String> hobby; //爱好
private LocalDatetime createTime; //创建时间
}
原先是这样的 存在数据库:
{
"id": "test_9c43ed66f5f5",
"username": "test_26207c9c0e26",
"password": "test_1ca621129395",
"age": 23,
"hobby": ["climb","bascketball"]
}
后面我修改成:
{
"id": "test_9c43ed66f5f5",
"username": "update112",
"password": "pwdchange",
"hobby":: ["climb","eat fish"],
"createTime":"2023-07-06 12:23:01"
}
那么想得到这样的结果:
{"propertyName":"id","changeType":"noChange",oldValue:"test_9c43ed66f5f5","newValue":"test_9c43ed66f5f5"}
{"propertyName":"username","changeType":"change",oldValue:"test_26207c9c0e26","newValue":"update112"}
{"propertyName":"password","changeType":"change",oldValue:"test_1ca621129395","newValue":"pwdchange"}
{"propertyName":"age","changeType":"delete",oldValue:"23","newValue":null}
{"propertyName":"hobby","changeType":"change",oldValue:"["climb","bascketball"]","newValue":["climb","eat fish"]}
{"propertyName":"createTime","changeType":"add",oldValue:null","newValue":"2023-07-06 12:23:01"}
改如何设计?
使用 BeanWrapperImpl 反射实现。。。