在表中新增字段
在实体类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中进行设置,确认保存修改,重新测试通过。