MybatisPlus自动填充(建立、更新时间)

准备 

1、建立user表

DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

 2、插入样例数据

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');
方式一:数据库级别(工作中不允许你修改数据库)

1、在表中新增字段 create_time, update_time 

MybatisPlus自动填充(建立、更新时间)_第1张图片

 2、测试插入方法,我们需要先把实体类同步!

原实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

加入

private Date createTime; //java.util.Date
private Date updateTime;
3 、更新查看结果即可
更新前

 执行更新操作(更新id为5的age)

@Test
void testUpdate(){
    User user = new User();
    user.setId(5L);
    user.setAge(20);
    userMapper.updateById(user);
}

更新后

 方式二:代码级别

1、删除数据库的默认值、更新操作!

 

2、实体类字段属性上需要增加注解

// 字段添加填充内容 
@TableField(fill = FieldFill.INSERT) 
private Date createTime; 
@TableField(fill = FieldFill.INSERT_UPDATE) 
private Date updateTime;

 3、编写处理器来处理这个注解即可!

@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("insertFill start ...");

        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("updateFill start ...");

        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}
4 、测试插入
        
5 、测试更新、观察时间即可!

你可能感兴趣的:(MybatisPlus,java,mybatis)