在表中新增字段

图片说明

在实体类user中新增对应字段,并添加注解,注意mysql中字段使用的是下划线风格,java中使用的是驼峰规则。

 @TableField(fill = FieldFill.INSERT)
 private Date createTime;
 @TableField(fill = FieldFill.INSERT_UPDATE)
 private Date updateTime;

相关的配置可以参考官方文档https://mp.baomidou.com/guide/auto-fill-metainfo.html。

创建一个类,实现接口MetaObjectHandler。

@Component // @Component注解将MyMetaObjectHandler交给spring管理
public class MyMetaObjectHandler implements MetaObjectHandler {
    // 使用mp执行insert操作,这个方***自动执行
    @Override
    public void insertFill(MetaObject metaObject) {
        // 根据这个方法的名字即可知道对应功能。第一个参数filed是要填充的字段,第二个参数val是填充的值,第三个参数是元数据
        // 元数据是指描述其他数据的数据:表名,字段名(id,name...)等
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);

    }

    // 使用mp执行update操作。这个方***自动执行
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

执行测试案例,但是发现方法一直在执行中,无法完成执行。但是这个奇奇怪怪的问题可能和网络有关系,当我回到家中用家里的WiFi测试就没有这个问题了。

图片说明
但是执行update()时报错。

 Error updating database.  Cause: java.sql.SQLException: Field 'id' doesn't have a default value

这是因为mysq中没有设置主键自增。在navicat中进行设置,确认保存修改,重新测试通过。
图片说明