首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

逻辑删除还是物理删除

看到标题,有的童鞋心中暗想“数据删除有什么可提的呢?不就是执行个delete语句吗?有什么难的呀?”其实呢数据删除没有你想的这么简单,一般情况下公司会明确的要求数据只能逻辑删除,不能物理删除。...那什么优势逻辑删除,什么又是物理删除呢?...,而不是非要删除它们,这就是逻辑删除的原理 我们看下例子,给作废的订单设置为作废的状态,给注销的订单设置为注销的状态,给过期的优惠券设置为过期的状态,这都是可以的。...当然,有童鞋会说“如果表里存放了大量无效的数据,这个会占用表的空间,那么Innodb这种引擎,一张表的数据超过2000万性能就会下降的很快,那么用逻辑删除表是不是就会增长的很快呢?”...最后来说下逻辑删除 我们给t_user表做逻辑删除 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/137063.html原文链接:https://javaforall.cn

1.3K30

java逻辑删除代码_MybatisPlus实现逻辑删除功能

逻辑删除 你有没有见过某些网站进行一些删除操作之后,你看不到记录了但是管理员却能够查看到。这里就运用到了逻辑删除。 什么是逻辑删除?...逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(deleted)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。...在逻辑上数据是被删除的,但数据本身依然存在库中。...(since 3.3.0,配置后可以忽略不配置步骤2) logic-delete-value: 1 # 逻辑删除值(默认为 1) logic-not-delete-value: 0 # 逻辑删除值(...,更多相关MybatisPlus 逻辑删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

1.7K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MybatisPlus逻辑删除

    ** MybatisPlus——逻辑删除 ** 首先我们要知道为什么要进行逻辑删除逻辑删除可以理解为假删除,并不是真的将数据进行删除。...假删除只是为了数据安全起见,在数据库中增添一个字段,我们可以默认这个字段为1时数据被删除,而字段值为0时数据被删除 逻辑删除是为了方便数据恢复和保护数据本身价值的一种方案。...我们电脑里的回收站正是利用了逻辑删除,我们点击删除的文件不会被立刻删除,而是放入回收站,等我们反悔时可以将其进行还原。...在MybatisPlus中设置逻辑删除有以下几个步骤 1.首先为Strudent表添加logic_delete字段,通过判断logic_delete字段的数值,我们可以确定数据是否已被删除 2.如果...private String stuName; @Version private Integer version; private int stuAge; //逻辑删除字段

    66120

    MybatisPlus逻辑删除

    文章目录 一、配置 1.1、在application.yml配置文件中: 1.2、直接在实体类中指定逻辑删除的值 二、测试 2.1 逻辑删除 2.2 查询逻辑删除的数据 一、配置 1.1、在application.yml...private Integer logicFlag; } 1.2、直接在实体类中指定逻辑删除的值 @Data @TableName("tbl_user") public class User...fill = FieldFill.INSERT_UPDATE) private String name; @TableLogic(value = "1",delval = "-1") //逻辑删除字段...private Integer logicFlag; } 二、测试 数据库初始数据 2.1 逻辑删除 现在逻辑删除id为2的这条数据 @Test public void testLogicDelete...会将logic_flag字段设置成-1(-1是我们在application.yml或者@TableLogic注解中指定的值) 2.2 查询逻辑删除的数据 这时查询id为2的这条数据(被逻辑删除的数据)

    47010

    java 物理删除逻辑删除

    java 物理删除逻辑删除 逻辑删除:文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符,通常这种删除操作是可逆的,就是说用适当的工具或软件可以把删除的文件恢复出来。...物理删除:指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的 物理删除是计算机处理数据时的一个概念。 与物理删除相对应的是逻辑删除。...逻辑删除就是对要要删除的数据打上一个删除标记,在逻辑上是数据是被删除的,但数据本身依然存在!而物理删除则是把数据从介质上彻底删除掉。...配置逻辑删除的步骤: 在配置文件yml中应该配置的信息 mybatis-plus: global-config: db-config: logic-delete-value: 1...# 逻辑删除值(默认为 1),该具体删除值和数据库中的表数据对应即可 logic-not-delete-value: 0 # 逻辑删除值(默认为 0),该具体删除值和数据库中的表数据对应即可

    1.3K30

    java逻辑删除_MybatisPlus中的删除逻辑删除及区别介绍

    删除又分为逻辑删除和物理删除,那么它们有什么区别呢? 物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。...逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。...在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除逻辑删除怎么实现的吧 首先假设我有这样一张表 实体类: package com.atguigu.mybatis_plus.entity...: 物理删除比较简单,接下来我们看看逻辑删除怎么实现吧!...,deleted字段的值由0变成了1 测试后分析打印的sql语句,是一条update 注意:被删除前,数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作 (5)测试逻辑删除后的查询

    1.7K30

    mysql逻辑删除案例_实现数据逻辑删除的一种方案

    什么是逻辑删除 所谓逻辑删除是指数据已经“不需要”了,但是并没有使用delete语句将这些数据真实的从数据库中删除,而只是用一个标志位将其设置为已经删除。...为什么需要逻辑删除 对数据进行逻辑删除,一般存在以下原因: 防止数据误删除,不能找回数据; 这些数据还具有一定的商业价值,比如用户的注册信息; 虽然这些数据可以删除,但是这些数据还有关联数据,这些关联数据不能删除...但是,逻辑删除也会带来的一些问题: 数据库表的数据冗余,导致查询缓慢; 写sql进行数据处理时需要排除那些已经逻辑删除的数据,这就会导致sql复杂,容易出错,特别是涉及多表查询时; 进行逻辑删除时,还需要考虑与之相关的数据怎么处理...所以是否需要对数据进行逻辑删除,需要根据具体的业务场景,以及逻辑删除的优缺点进行综合考虑。 网友的一些建议 综合考虑,对于中小型的项目,逻辑删除所带来的好处有限,但带来的问题却很多。...但心里应该清除,当项目大到一定程度,对数据安全性的要求高到一定程度,使用逻辑删除代替物理删除是必然的,在后面的数据库设计中,可以先小范围的尝试使用逻辑删除,一旦开发模式成熟,就全面使用逻辑删除代替物理删除

    2.2K60

    mybatis-plus逻辑删除

    mybatis-plus:逻辑删除 不做真正的删除,在查询时添加一个where条件 例如在某宝上有一条不可描述的购买信息不想被看到,你要删除他,但是从平台的角度考虑是不能随便就彻底的删除掉数据的,那么有没有一个两个都可以满足的解决方式呢...,答案是有的——逻辑删除,不做真正意义的删除,在数据库中用一个字段做专门的标记,原本查询的sql语句就变成了这样: select * from tableName where 原先的查询条件 and 用来标记的字段...配置文件中配置 mybatis-plus: global-config: db-config: logic-delete-field: flag # 全局逻辑删除的实体字段名(...since 3.3.0,配置后可以忽略不配置步骤2) logic-delete-value: 1 # 逻辑删除值(默认为 1) logic-not-delete-value:...运行测试方法,deleted字段被更新 以后的查找方法会被加上一个where条件 deleted=0; 从逻辑上实现了数据的删除

    85330

    mybatisPlus之逻辑删除解读

    为什么会有逻辑删除 在我们对数据进行增删查改的时候,对于删除操作来说,我们思考一个问题,在实际开发中我们真的会将数据完成从数据库中删除掉么?...这里我们就采取逻辑删除的方案,逻辑删除的操作就是增加一个字段表示这个数据的状态,如果一条数据需要删除,我们通过改变这条数据的状态来实现,这样既可以表示这条数据是删除的状态,又保留了数据以便以后统。...null,另一个值支持配置为函数来获取值如now() 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。...如果你需要频繁查出来看就不应使用逻辑删除,而是以一个状态去表示。...: 0 # 逻辑删除值(默认为 0) logic-delete-field:实体类的哪个字段作为logic-delete-field  logic-delete-value: 1 # 逻辑删除

    1.7K40

    mybatisPlus填坑之逻辑删除

    网上大部分的关于mybatisPlus的逻辑删除的配置介绍都是有问题的,原因可能是官网已经做了更新!!!...区别是多了一个路径db-config,同学们细看了) mybatis-plus: global-config: db-config: logic-delete-value: 1 # 逻辑删除值...(默认为 1) logic-not-delete-value: 0 # 逻辑删除值(默认为 0) 对于逻辑删除拦截器的bean的注入方式 import com.baomidou.mybatisplus.core.injector.ISqlInjector...@Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } } 附件说明 逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案...如果你需要再查出来就不应使用逻辑删除,而是以一个状态去表示。 如: 员工离职,账号被锁定等都应该是一个状态字段,此种场景不应使用逻辑删除

    43730

    mybatis 乐观锁和逻辑删除

    本篇介绍easymybatis如配置乐观锁和逻辑删除。 乐观锁 easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现。...@Version private Long version; 注:更新不成功不会抛出异常,而是update返回值为0 逻辑删除 从1.7版本开始支持逻辑删除功能,即更新一个字段标记为已删除。...查询的时候会自动过滤掉已删除的数据。 假设数据库表中有一个字段is_deleted类型为tinyint,0表示未删除,1表示已删除。...如果is_deleted类型为char(1),f表示未删除,t表示已删除。...,不指定默认为0 deleteValue:指定删除后保存的值,不指定默认为1 假设1表示未删除,2表示已删除,@LogicDelete的设置方法如下:@LogicDelete(notDeleteValue

    1.2K20

    Mysql 实现多种逻辑删除方案

    Mysql 实现多种逻辑删除方案 新增逻辑删除字段方式 多deleted值 deleted: 0 代表未删除删除时把deleted赋值为时间戳UNIX_TIMESTAMP(NOW()) 采用备份表方式...在实际的项目开发中,对于某些业务数据,一般都不会采用物理删除的方式,毕竟在数据是很宝贵了,所以也就有了逻辑删除的方式出现了。...常见的逻辑删除方式有以下几种:1.为相关的表结构新增一个逻辑删除字段deleted 0表示未删除,1表示已删除(目前最常见的方式;2....新增逻辑删除字段方式 字段中设置一个字段deleted:0表示未删除,1表示已删除。...所以也就不太符合逻辑删除的需求场景了,那有没有改进的地方呢,答案当然是有了。

    1K30

    SpringBoot 集成 MybatisPlus 九——逻辑删除

    1 逻辑删除的概念逻辑删除不会在数据库中删除数据,只是通过一个字段用来标识被删除的记录,数据仍然保存在数据库中。...而是多采用逻辑删除的方式,即不会真正在删除删除数据,而是使用一个字段来标识它已经被删除。如使用 isDeleted 字段标识该条记录是否已经被删除,0代表未删除,1代表已删除。...=02 逻辑删除的应用2.1 修改数据表在数据表中增加一个字段 isDeleted,并设置为数值型,默认值为0。...# 全局配置 global-config: db_config: # 全局逻辑删除的字段名 logic-delete-field: isDeleted # 逻辑删除值...,我们并不需要直接去修改逻辑删除标识字段,MybatisPlus 会为我们在SQL语句后自动设置。

    79400

    JPA和Mybatis的逻辑删除

    定义 逻辑删除:不会直接对数据库记录进行删除,而是标识要删除的记录,每次查询都不会查到它,实现删除的效果。 平时公司可能不会允许我们随意去删除数据,所以会要求我们采用逻辑删除的方式去操作数据库。...Mybatis的逻辑删除 Mybatis自带了这么个插件。 操作如下: 1,我们先配置这个插件。...可以使用application.yml里面配置 global-config: db-config: #配置逻辑删除 logic-delete-value: 1 # 逻辑删除值(默认为...JPA的逻辑删除(重点) 因为JPA并不支持逻辑删除,所以我们需要自己实现。...但是毕竟需求多变,人家如果只想物理删除,我们也简单,删除这两句话就行。但是如果那二货产品想要逻辑删和物理删除共存的话,我们就不好搞了。 2,解决1的问题。

    6.1K100
    领券