Mybatis Plus:自动填充与逻辑删除

自动填充

创建时间、修改时间!这些个操作一般都是自动化完成的,我们不希望手动更新!

阿里巴巴开发手册:所有的数据库表:gmt_create、gmt_modified几乎所有的表都要配置上!而且需要自动化!

方式一:数据库级别

1、在表中新增字段 create_time,update_time
Mybatis Plus:自动填充与逻辑删除_第1张图片
2、我们需要先把实体类同步!

private Date createTime;
private Date updateTime;

3、再次测试
Mybatis Plus:自动填充与逻辑删除_第2张图片
方式二:代码级别,注意:时区问题少了八个小时
1、删除数据库的默认值
Mybatis Plus:自动填充与逻辑删除_第3张图片
2、实体类字段属性上需要增加注解

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

@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

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

@Slf4j
@Component //一定不要忘记把处理器加到IOC容器中!
public class MyMetaObjectHandler implements MetaObjectHandler {

    //插入时候的填充策略
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert file...");
        //default MetaObjectHandler
        // 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 insert file...");
        this.setFieldValByName("updateTime",new Date(),metaObject);
    }
}

4、测试插入

5、更新时间

逻辑删除

物理删除:从数据库中直接移除
逻辑删除:在数据库中没有被移除,而是通过一个变量来让他失效!deleted = 0 => deleted = 1

管理员可以查看被删除的记录!防止数据的丢失!类似于回收站!

测试一下:

1、在数据表中增加一个 deleted 字段
在这里插入图片描述2、实体类中增加属性

@TableLogic //逻辑删除
private Integer delete;

3、配置!

// 逻辑删除组件
@Bean
public ISqlInjector sqlInjector() {
    return new LogicSqlInjector();
}
# 配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

4、测试一下
Mybatis Plus:自动填充与逻辑删除_第4张图片
记录依旧在数据库,但是值却已经变化了
Mybatis Plus:自动填充与逻辑删除_第5张图片
在这里插入图片描述

你可能感兴趣的:(Mybatis,Plus)