mybatis-plus自动填充功能

时间:2024-7-17    作者:老大夫    分类: 尚庭公寓


插入或更新数据时,有三个值需要设置

逻辑删除
is_deleted,它可以在数据里设置默认值为零,就无需手动设置了。

创建时间
createTime,使用自动填充功能

更新时间
updateTime,使用自动填充功能

第一步需要在实体类的属性上加注解@TableField

@Data
public class BaseEntity implements Serializable {

    @Schema(description = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @JsonIgnore
    @Schema(description = "创建时间")
    //插入时填充时间信息
    @TableField(value = "create_time",fill = FieldFill.INSERT)
    private Date createTime;

    @JsonIgnore
    @Schema(description = "更新时间")
    //更新时填充时间信息
    @TableField(value = "update_time" ,fill = FieldFill.UPDATE)
    private Date updateTime;

    @JsonIgnore
    @TableLogic
    @Schema(description = "逻辑删除")
    @TableField("is_deleted")
    private Byte isDeleted;

}

第二步配置自动填充的内容

建立一个配置类实现MetaObjectHandler实现insertFill、updateFill方法的重写,内容就是自动填充的内容
注意加注解@Component加入IOC容器

  • 配置自动填充的内容,具体配置如下

    common模块下创建com.atguigu.lease.common.mybatisplus.MybatisMetaObjectHandler类,内容如下:

    @Component
    public class MybatisMetaObjectHandler implements MetaObjectHandler {
      @Override
      public void insertFill(MetaObject metaObject) {
          this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
      }
    
      @Override
      public void updateFill(MetaObject metaObject) {
          this.strictUpdateFill(metaObject, "updateTime", Date.class, new Date());
      }
    }

在做完上述配置后,当写入数据时,Mybatis-Plus会自动将实体对象的create_time字段填充为当前时间,当更新数据时,则会自动将实体对象的update_time字段填充为当前时间。


扫描二维码,在手机上阅读

推荐阅读: