配置逻辑删除

news/2025/3/22 1:51:15/文章来源:https://www.cnblogs.com/linzepro/p/18231007
对于一些比较重要的数据,我们往往会采用逻辑删除的方案,即:
  • 在表中添加一个字段标记数据是否被删除
  • 当删除数据时把标记置为true
  • 查询时过滤掉标记为true的数据
一旦采用了逻辑删除,所有的查询和删除逻辑都要跟着变化,非常麻烦。
 
为了解决这个问题,MybatisPlus就添加了对逻辑删除的支持。
注意,只有MybatisPlus生成的SQL语句才支持自动的逻辑删除,自定义SQL需要自己手动处理逻辑删除。
 
例如,我们给address表添加一个逻辑删除字段:
alter table address add deleted bit default b'0' null comment '逻辑删除';
然后给Address实体添加deleted字段:
接下来,我们要在application.yml中配置逻辑删除字段:
mybatis-plus:global-config:db-config:logic-delete-field: deleted # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
测试: 首先,我们执行一个删除操作:
@Test
void testDeleteByLogic() {// 删除方法与以前没有区别addressService.removeById(59L);
}
方法与普通删除一模一样,但是底层的SQL逻辑变了:
查询一下试试:
@Test
void testQuery() {List<Address> list = addressService.list();list.forEach(System.out::println);
}
会发现id为59的确实没有查询出来,而且SQL中也对逻辑删除字段做了判断:
综上, 开启了逻辑删除功能以后,我们就可以像普通删除一样做CRUD,基本不用考虑代码逻辑问题。还是非常方便的。
注意: 逻辑删除本身也有自己的问题,比如:
  • 会导致数据库表垃圾数据越来越多,从而影响查询效率
  • SQL中全都需要对逻辑删除字段做判断,影响查询效率
因此,我不太推荐采用逻辑删除功能,如果数据不能删除,可以采用把数据迁移到其它表的办法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/719879.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot自动装配bean到IOC容器的实现

前言Spring Boot能帮助我们Java开发者快速开发基于Spring框架的应用,除了其作为依赖管理好帮手的一众Spring-Boot-Starter之外,其自动装配(Auto Configure)特性也起到了非常重要的作用。那么Spring Boot是如何实现自动装配的呢?本文将结合源码去讲解其原理。 版本信息spri…

有哪些免费方法可以将PDF转成PPT?

有时候我们在制作文件时,新建的PPT文档是空白页比较单调,会去网上下载一些模板,而下载后的文档多是PDF格式,必须转换为PPT格式,以便使用自己的文档。所以pdf转ppt怎么转换免费呢?下面一起来看看pdf转ppt这些方法吧。 方法一、修改文件拓展名 小伙伴们平时打开文件的时候,…

idea打包运行后显示,没有主清单属性

一、问题现象idea打包成jar包,运行后显示,没有主清单属性!二、问题分析主要原因如下:1. 缺少了项目maven打包插件 spring-boot-maven-plugin。2. 没有指定具体的项目的Main方法入口或启动类。三、解决方法 (一)方法1 1、查看项目打包的pom.xml文件中,并添加配置如下:&l…

zabbix监控域名到期时间

# 获取证书过期时间脚本cat /etc/zabbix/scripts/base/check-http-expire.sh #!/bin/bash host=$1 #end_date=`whois -H $host|grep "Registry Expiry Date"|awk {print $NF}` end_date=`whois -H $host|egrep "Registry Expiry Date|Expiration Time"|a…

字符串的应用---合并

准备: public class Employee{ public int Id { get; set; } public string Name { get; set; } public double Salary { get; set; } } public class Seat { public int Id { get; set; } publ…

pycharm创建项目后修改默认的app

在pycharm里面创建django项目后,会自动创建一个与项目名称相同的app,该app是可以修改的,但是修改后需要修改配置文件settings.py中的配置项ROOT_URLCONF

Apline部署K3s的Agent

介绍了在Alpine-Linux上部署K3s-Agent之前我们在Ubuntu上部署了K3s的Server节点(传送门),这次我们加入两台K3s的Agent节点搭建一个K3s的3节点工作环境。 需要准备好网络环境,确保三台VM之间是可以ping通的,设置好固定IP和主机名 实验环境的IP列表Hostname IPubuntu22 192.…

关于bandgap中极性的判断

bandgap的中运放的正负相位都有连接,且前馈系数一般相同,则需要使得负反馈系数大于正反馈系数,环路才稳定。 对于不同类型的bandgap,其正负相位一般连接不同。 https://blog.csdn.net/weixin_39889337/article/details/112767268

基于mac-vlan的网络准入控制方案

网络拓扑图如下:SW1 配置vlan 10 20 30 4000 #创建vlan interface GigabitEthernet1/0/1 #进入接口 port link-type hybrid #接口模式设为hybrid port hybrid vlan 10 20 30 4000 untagged #vlan 10 20 30 4000数据包没有tag port hybrid pvid vl…

工具:一键采集 平台:TB+PDD+JD...

电商商品数据集通常是指收集自电子商务平台的商品信息的结构化数据集合。这些数据包括但不限于商品名称、价格、描述、用户评价、分类标签、卖家信息、销售量、库存量、图片链接等。数据集可以由电商平台公开提供,也可以通过网络爬虫等技术手段获得,并且经常会用于机器学习、…

Stratix V FPGA系列:5SGXEBBR3H43I3G、5SGXEBBR1H43C2G、5SGXEBBR2H43I2G为带宽应用而打造,降低了系统成本和功耗

Stratix V GX FPGA芯片提供340K逻辑单元和集成最大12.5 Gbps传输速度的收发器Stratix V系列 Stratix V FPGA采用新的存储器体系结构,降低延时,高效实现FPGA业界最好的系统性能。Stratix V FPGA为网络设备生产商提供存储器接口解决方案,支持在互联网上迅速有效的传送视频、语…

NCHU-软件学院-232019班-23201125-罗伊鑫-第二次Blog

前言 本次Blog总结三次题目集的7-1题目的知识点、题量、难度等情况,以及写完后的错误总结和自我思考。 1.知识点 三次题目集都对于类的设计的提前规划好有着必要的需求,还有就是对于继承与多态的合理的使用。接着就是对于正则表达式的使用的检测,然后就是要有清晰的逻辑编程…