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都自动生成了。