逻辑删除

(1)简介  

删除数据,可以通过物理删除,也可以通过逻辑删除。  

物理删除指的是直接将数据从数据库中删除,不保留。  

逻辑删除指的是修改数据的某个字段,使其表示为已删除状态,而非删除数据,保留该数据在数据库中,但是查询时不显示该数据(查询时过滤掉该数据)。

给数据表增加一个字段:delete_flag,用于表示该数据是否被逻辑删除。

CREATE TABLE test_mybatis_plus_users
(id BIGINT 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 '邮箱',create_time timestamp NULL DEFAULT NULL COMMENT '创建时间',update_time timestamp NULL DEFAULT NULL COMMENT '最后修改时间', delete_flag tinyint(1) NULL DEFAULT NULL COMMENT '逻辑删除(0 未删除、1 删除)',PRIMARY KEY (id)
);

(2)使用逻辑删除。  

可以定义一个自动填充规则,初始值为 0。0 表示未删除, 1 表示删除。

/*** 逻辑删除(0 未删除、1 删除)*/
@TableLogic(value = "0", delval = "1")
@TableField(fill = FieldFill.INSERT)
private Integer deleteFlag;
​

在创建 handler 包并创建 MyMetaObjectHandler

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 {@Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, "deleteFlag", Integer.class, 0);}@Overridepublic void updateFill(MetaObject metaObject) {}
}

(3)简单测试  使用 mybatis-plus 封装好的方法时,会自动添加逻辑删除的功能。  若是自定义的 sql 语句,需要手动添加逻辑。

 //逻辑删除@Testpublic void testDelete() {if (usersService.removeById(1444840211061186561L)) {System.out.println("删除数据成功");usersService.list().forEach(System.out::println);} else {System.out.println("删除数据失败");}}

若去除 TableLogic 注解,再执行 testDelete 时进行物理删除,直接删除这条数据。

逻辑删除(通俗易懂)相关推荐

  1. 防用户误删除,耗费一周时间把DeleteMark标志都加上来了,所有的删除操作从“物理删除”转为“逻辑删除”

    用 DeleteMark 的出发点: 1:虽然在界面上有删除提示,但是客户错误的删除了一笔数据后,想恢复被删除的数据是特别困难的,有人曾比喻,若输入数据的工作量,用1来比喻,那恢复被误删除的数据的工作 ...

  2. mybatis 乐观锁_MybatisPlus新特性之逻辑删除、乐观锁、自动填充

    MP特性 公共字段的自动填充功能 自动更新全局属性,比如创建的时间修改的时间,这样就不用每执行一次插入更新操作都带上一个set大大节省了很多效率,从而也避免为了因为时间格式的不统一问题. 为了输出日志 ...

  3. mybatisplus逻辑删除

    逻辑删除 SpringBoot 配置方式: application.yml 加入配置(如果你的默认值和mp默认的一样,该配置可无): mybatis-plus:global-config:db-con ...

  4. mysql逻辑删除的区别_不能和逻辑删除一起配置,不然报错。

    源自:8-1 SQL注入器简介及自定义方法实现 不能和逻辑删除一起配置,不然报错. 逻辑删除的配置:@Bean public ISqlInjector sqlInjector(){ return ne ...

  5. mysql逻辑删除的问题_数据库表涉及-逻辑删除

    对于只进行逻辑删除的表,如 CREATE TABLE `pics` ( `pid` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `aid` bigint( ...

  6. MyBatis-Plus 乐观锁 防止超卖、逻辑删除、自动填充、Id自增

    MyBatis-Plus 乐观锁 防止超卖.逻辑删除.自动填充 Day3 前面的简单的讲了一下mybatis-plus的使用 当然有很多不足 我写博客就是想促进大家一起学习 也想让这些内容更简单一些. ...

  7. MyBatisPlus中开启了逻辑删除则更新逻辑字段不再管用

    场景 MyBatisPlus中全局Sql注入器应用_逻辑删除使用MyBatisPlus中全局Sql注入器应用_逻辑删除使用: https://blog.csdn.net/BADAO_LIUMANG_Q ...

  8. MyBatisPlus中全局Sql注入器应用_逻辑删除使用

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 MyBatisPlus中自定义全局操作流程: https: ...

  9. MyBatis-Plus 高级功能 —— 实现逻辑删除

    一.引言 逻辑删除,顾名思义就是通过逻辑判断的手段表示该条数据已删除. 二.具体实现 删除功能是项目中经常见到的需求,比如需要删除某一件商品,删除一个订单,但往往不会把实际数据删除,而是选择逻辑删除来 ...

  10. Python Django 自定义Manager实现批量删除(逻辑删除)

    默认是物理删除,通过自定义Manager实现逻辑删除功能. 调用delete()方法后,数据依然在,只是update了isDelete字段的值,真正实现了逻辑删除:

最新文章

  1. c++ 中__declspec 的用法
  2. html显示yuv,CS50 HTML和CSS基础(介绍最简单的HTML和CSS)
  3. 使用 JavaScript 进行 Base64 编码与解码
  4. ado.net的操作查询数据 0127
  5. WinSCP 连接 Ubuntu 拒绝的问题
  6. fastjson转换对象时出错,$ref: $.data.list[0].xxxx
  7. w10恢复出厂设置_Win10系统恢复出厂设置和重装系统有什么区别?
  8. ElasticSearch(1)CentOS安装ElasticSearch测试CRUD
  9. 项目关键路径与项目最长路径有可能不同
  10. 【Pix4d精品教程】Pix4d修编正射影像DOM的两种方法案例详解
  11. 对HashMap进行排序处理
  12. 在linux终端绘图,Boxes - 在Linux终端中绘制ASCII艺术盒子和图形
  13. ftp服务器和共享文件夹权限设置,ftp服务器共享文件夹权限设置
  14. matlab线条不平滑如何滤波,复杂曲线的包络线不平滑
  15. 微信小程序制作背景图片
  16. 汉罗塔汉洛塔c++,看不懂ni打我
  17. 【Paper】2022_Fixed-Time Cooperative Tracking for Delayed Disturbed Multi-Agent Systems Under Dynamic
  18. 看什么看!你的学习与就业我包了!!!
  19. 无界——多元合作的发散思维
  20. 打包html5调用手机震动,javascript实现手机震动API代码

热门文章

  1. 信号与系统(关于流程框图的一个简单问题记录)
  2. Egret引擎启动流程和源码裁剪
  3. 【PS】PS改变字体大小的方法
  4. 智能语音概念界定及技术架构
  5. 微服务之服务网关Gateway
  6. C#控制语音卡实现呼叫、录音以及来电弹屏
  7. 项目范围管理(重点)-真题答案与解析
  8. mysql 累乘_oracle sql语句实现累加、累减、累乘、累除
  9. ftp下载工具,6款能够满足所有需求的ftp下载工具
  10. 【第115期】零基础学做游戏制作_搭环境Unity hub