之前我们项目经理对我说过一段话,大概的意思:每个表都应该包括add_time,update_time,deleted字段,会有极大的用处!
我们用到最多的就是mybatis-plus,下面我就拿它来接单介绍一下使用
新建一个user表
创建它的实体类
@Data
@TableName("user")
public class User implements Serializable {
private static final long serialVersionUID = 9099266107829856068L;
@TableId(type = IdType.UUID)
private String id;
private String name;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime addTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
注解的含义:
@TableId(type = IdType.UUID) :自动生成id(uuid格式无“-”) 自定义Id 注入IdentifierGenerator @Bean public IdentifierGenerator idGenerator() { return new CustomIdGenerator(); }
@TableField(fill = FieldFill.INSERT) : 被标识的字段执行insert插入语句时自动插入操作 @TableField(fill = FieldFill.INSERT_UPDATE) :被标识的字段执行insert和update时时自动插入操作
配置文件
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setInsertFieldValByName("addTime", LocalDateTime.now(),metaObject);
this.setInsertFieldValByName("updateTime",LocalDateTime.now(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setUpdateFieldValByName("updateTime",LocalDateTime.now(),metaObject);
}
}
注意:时间字段要用 LocalDateTime.表示,用Date会有时间不匹配的问题
测试:
更新该数据
ok!!!