# mybatis-plus 使用记录

# @TableField

说明:

  • 自动注入 创建人、创建时间、更新人、更新时间

示例:

@Data
public abstract class BaseEntity {
    /**
     * 创建者
     */
    @TableField(fill = FieldFill.INSERT)
    private String createBy;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 更新者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateBy;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updateTime;
}


@Component
public class MybatisPlusHandler implements MetaObjectHandler {
    private final static String CREATE_TIME = "createTime";
    private final static String CREATE_BY = "createBy";
    private final static String UPDATE_TIME = "updateTime";
    private final static String UPDATE_BY = "updateBy";
    private final static String ADMIN = "admin";
    
    @Override
    public void insertFill(MetaObject metaObject) {
        // 新增数据时若对应字段没有值(空串或null)时,以下代码会对该字段进行自动填充
        // 时间的自动填充,时间默认填充当前时区系统时间
        LocalDateTime localDateTime = LocalDateTime.now();
        Date now = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
        this.strictInsertFill(metaObject, CREATE_TIME, Date.class, now);
        this.strictInsertFill(metaObject, UPDATE_TIME, Date.class, now);

        // 操作用户名填充
        this.strictInsertFill(metaObject, CREATE_BY, String.class, ADMIN);
        this.strictInsertFill(metaObject, UPDATE_BY, String.class, ADMIN);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        // 修改数据时无论字段是否有值,都会对该字段进行自动填充,时间默认填充当前时区系统时间
        // 时间的自动填充,时间默认填充当前时区系统时间
        LocalDateTime localDateTime = LocalDateTime.now();
        Date now = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
        this.setFieldValByName(UPDATE_TIME, now, metaObject);

        // 操作用户名填充
        this.setFieldValByName(UPDATE_BY, adminName, metaObject);
	
        this.strictUpdateFill(metaObject, "updateBy", String.class, ADMIN);
    }
}

参考:

# @TableLogic

说明:

  • 标记软删除的字段
  • 默认值: '0' - 未删除; '1' - 已删除。

参考:

本章目录