自动填充
数据自动填充,比如创建的时间,多个vip用户的时候,每个vip用户都会有一个开始时间,添加vip用户时,给表中的开始时间字段自动填充数据。
原理:实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
实现步骤
1.注解自动填充字段: 实体类表中添加注解@TableField(fill = FieldFill.INSERT)
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
2.自定义实现类 MyMetaObjectHandler
@Slf4j:添加是slf4j 日志,
@Component:添加bean到IOC容器中
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill ...");
// setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill ...");
// setFieldValByName(String fieldName, Object fieldVal, MetaObject metaObject)
this.setFieldValByName("updateTime",new Date(),metaObject);
}
3.测试
@Test
void insert(){
User user = new User();
user.setAge(20);
user.setEmail("sadasd@qq.com");
user.setName("aaa");
userMapper.insert(user);
}
@Test
void update(){
User user = new User();
user.setId(5);
user.setAge(18);
user.setEmail("sadasd@qq.com");
user.setName("aaa");
userMapper.updateById(user);
}