默认值设置
上篇文章,我们提到了逻辑删除的概念,因此,我们在插入数据的时候,总是得把is_delete设置为0,然后再执行插入数据操作,为了简便,我们可以把数据库(MySQL)中的is_deleted
字段的默认值设置为0:
1.点击选中is_deleted
字段所在的表,
2.选择“设计表”
3.选中is_deleted
字段
4.将默认的null改为 0
自动填充
自动填充,就是通过统一配置,在插入或更新数据时,自动为某些字段赋值,无需手动赋值。
第一步:在@TableField注解中加入 fill 属性
FieldFill.INSERT:插入时自动填充
FieldFill.UPDATE:更新时自动填充
@Data
public class BaseEntity {
@Schema(description = "主键")
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@Schema(description = "创建时间")
@JsonIgnore
@TableField(value = "create_time", fill = FieldFill.INSERT)
private Date createTime;
@Schema(description = "更新时间")
@JsonIgnore
@TableField(value = "update_time", fill = FieldFill.UPDATE)
private Date updateTime;
@Schema(description = "逻辑删除")
@JsonIgnore
@TableLogic
@TableField("is_deleted")
private Byte isDeleted;
}
第二步:配置自动填充的内容
@Component
public class MybatisMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime"/*填充字段*/, Date.class, new Date()/*填充的值(相当于now())*/);
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
}
}
在做完上述配置后,当写入数据时,Mybatis-Plus会自动将实体对象的create_time
字段填充为当前时间,当更新数据时,则会自动将实体对象的update_time
字段填充为当前时间。