MyBatisPlus自动填充
MyBatisPlus自动填充
自动填充:以注册用户时间和修改用户时间为例。
之前在MyBatisPlus增删改查中写道了添加数据
1.准备工作
现在对User表进行一些修改,添加两个字段,
ADD COLUMN `create_time` datetime(0) NULL AFTER `password`
ADD COLUMN `update_time` datetime(0) NULL AFTER `create_time`
实体类中添加两个属性
@TableId("create_time")
private Date createTime;
@TableId("update_time")
private Date updateTime;
2.在实体类属性中添加注解
@TableField(fill = FieldFill.INSERT,value = "create_time")
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE,value = "update_time")
private Date updateTime;
3.创建一个实现类
实现MetaObjectHandler
接口
package com.w.mpdemo;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
// 使用mp实现添加操作时,会执行该方法
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
// 使用mp实现修改操作时,会执行该方法
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}
在执行测试:
// 添加操作
@Test
public void addUser(){
User user = new User();
user.setName("张三");
user.setPassword("123");
userMapper.insert(user);
}
//修改操作
@Test
public void updateUser(){
User user = new User();
user.setId(1);
user.setName("李四");
userMapper.updateById(user);
}
执行操作后发现后面create_time和update_time都自动生成了。