xmtrock
发布于 2021-06-17 / 222 阅读
0

MybatisPlus完成自动填充(日期、逻辑删除)

实体类需要设置对应的注解,全都需要填充的

@ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
@TableLogic
@TableField(fill = FieldFill.INSERT)
private Integer isDeleted;

@ApiModelProperty(value = "创建时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;

@ApiModelProperty(value = "更新时间")
@TableField(fill = FieldFill.INSERT)
private Date gmtModified;

然后响应的配置类了

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 {
    //注意所有表都应该有相同的字段以实现对应的方法
    //添加数据时
    @Override
    public void insertFill(MetaObject metaObject) {
        //添加日期到指定字段中
        setFieldValByName("gmtCreate", new Date(), metaObject);
        setFieldValByName("gmtModified", new Date(), metaObject);
        //逻辑删除的默认值
        setFieldValByName("isDeleted", 0, metaObject);
    }

    //修改数据时
    @Override
    public void updateFill(MetaObject metaObject) {
        setFieldValByName("gmtModified", new Date(), metaObject);
    }
}

微服务模式在对应服务下添加sql输出也可的

#配置日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#逻辑删除
mybatis-plus.global-config.db-config.logic-delete-field=flag
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

最终效果是,删除的时候会自然置is_delete为1,不是实现物理删除。

在添加和更新数据时,也会同步替换掉对应的时间