MybatisPlus改造逻辑删除有多方便

MybatisPlus的逻辑删除可以有效保留历史数据。之前没有用逻辑删除的项目,想改造成逻辑删除总共需要几步?

答案:4步搞定

一、修改pom.xml的MybatisPlus版本(注意版本兼容性)

    <properties>...<!--<mybatis-plus.version>3.1.1</mybatis-plus.version>--><mybatis-plus.version>3.3.0</mybatis-plus.version></properties>

二、application.yml中添加逻辑删除配置

mybatis-plus:global-config:db-config:logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) 建议字段使用deletedlogic-delete-value: 1 # 逻辑已删除值(默认为 1) 默认可以不配logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) 默认可以不配

三、在java实体类中增加标志位属性(private boolean deleted;)

package cc.mrbird.febs.cos.entity;import java.time.LocalDateTime;
import java.io.Serializable;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;/*** 耗材类型** @author FanK*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ConsumableType implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "ID", type = IdType.AUTO)private Integer id;/*** 耗材类别名称*/private String name;/*** 备注*/private String content;/*** 创建时间*/private String createDate;/*** 逻辑删除标志位*///@TableLogic 3.3.0 版本后 可以不配@TableLogic标签private boolean deleted;}

四、在数据库表中增加标志位字段deleted(类型bit)

然后重启springboot,逻辑删除即生效

修改前

修改后:

需要注意的是,如果这个表涉及到通过mapper.xml编写的复杂查询,需要手动修改相关mapper.xml中的sql语句,否则其他业务逻辑会出现异常。

比如:

页面第一条数据在数据库中已经逻辑删除了,但是仍显示在界面上。

 需要在StockPutMapper.xml中添加查询条件:

and sp.deleted = 0

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cc.mrbird.febs.cos.dao.StockPutMapper"><!-- 分页获取入库记录 --><select id="stockPutByPage" resultType="java.util.LinkedHashMap">SELECTsp.id,sp.num,sp.price,sp.custodian,sp.put_user AS putUser,sp.content,sp.create_date AS createDateFROMstock_put spWHERE 1 = 1<!-- wh 添加逻辑删除后,需要增加查询条件 -->and sp.deleted = 0<if test="stockPut.num != null and stockPut.num != ''">AND sp.num LIKE CONCAT('%',#{stockPut.num},'%')</if><if test="stockPut.putUser != null and stockPut.putUser != ''">AND sp.put_user LIKE CONCAT('%',#{stockPut.putUser},'%')</if><if test="stockPut.custodian != null and stockPut.custodian != ''">AND sp.custodian LIKE CONCAT('%',#{stockPut.custodian},'%')</if></select>
</mapper>

如果不想将全部表改造逻辑删除,只改造部分表为逻辑删除,剩余改造的表增删改查操作受影响吗?

答案:不受影响,只要java实体类没有设置删除标志属性,mybatisplus自动生成的表操作仍按原始操作进行。比如将本例中的ConsumableType实体类,添加private boolean deleted;属性后,删除sql变为update ... set ... where ...,这时将private boolean deleted;属性注释掉,删除操作恢复为原来的 delete ... from ...。

15.扩展功能-逻辑删除_哔哩哔哩_bilibili

逻辑删除 | MyBatis-Plus

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

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

相关文章

【C语言期末不挂科——指针进阶篇】【上】

C语言进阶篇【上】 文章目录 C语言进阶篇【上】字符指针数组指针数组传参和指针传参  数组传参  一级指针传参  二级指针传参 前言&#xff1a; 我们在指针初阶篇学习了&#xff1a; 1、指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块空间。 2、指…

tomcat-pass-getshell 弱口令 漏洞复现

tomcat-pass-getshell 弱口令 漏洞复现 名称: tomcat-pass-getshell 弱口令 描述: Tomcat是Apache 软件基金会&#xff08;Apache Software Foundation&#xff09;的Jakarta 项目中的一个核心项目&#xff0c;由Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登…

基于GAN的多尺度门合并多模态MRI图像合成

Multi-Modal MRI Image Synthesis via GAN With Multi-Scale Gate Mergence 基于GAN的多尺度门合并多模态MRI图像合成背景贡献实验方法生成器gate mergence (GM) strategy&#xff08;门控融合策略&#xff09;判别器 损失函数Thinking 基于GAN的多尺度门合并多模态MRI图像合成…

notepad++ 插件JSONView安装

1&#xff0c;前提 开发过程中经常需要处理json格式语句&#xff0c;需要对json数据格式化处理&#xff0c;因为使用的是虚拟机内开发&#xff0c;所以没法连接外网&#xff0c;只能在本地电脑下载插件后&#xff0c;然后上传到虚拟机中&#xff0c;进行安装使用。 2&#xf…

SparkSQL之Optimized LogicalPlan生成过程

经过Analyzer的处理&#xff0c;Unresolved LogicalPlan已经解析成为Analyzed LogicalPlan。Analyzed LogicalPlan中自底向上节点分别对应Relation、Subquery、Filter和Project算子。   Analyzed LogicalPlan基本上是根据Unresolved LogicalPlan一对一转换过来的&#xff0c;…

Linux CentOS7 LVM

LVM&#xff08;Logical Volume Manger&#xff09;逻辑卷管理&#xff0c;Linux磁盘分区管理的一种机制&#xff0c;建立在硬盘和分区上的一个逻辑层&#xff0c;提高磁盘分区管理的灵活性。物理设备&#xff0c;是用于保留逻辑卷中所存储数据的存储设备。它们是块设备,可以是…

【算法萌新闯力扣】:旋转链表

力扣题目&#xff1a;旋转链表 开篇 今天是备战蓝桥杯的第25天和算法村开营第3天&#xff01;经过这3天的学习&#xff0c;感觉自己对链表的掌握程度大大地提升&#xff0c;尤其是在帮村里的同学讨论相关问题时。本篇文章&#xff0c;给大家带来一道旋转链表的题目&#xff0c…

XC1136 功率传输(PD) Sink控制器IC PD诱骗器芯片 输出可调 可支持多个

XC1136是一款功率传输(PD) Sink控制器IC。XC1136可以从符合Type-CPD协议的电源中请求最大或指定电压。输入电压范围:3V~28V支持USBType-C规范版本1.3支持USB PD2.0和PD3.0通讯协议&#xff0c;最多支持七个电源对象 该XC1136内置拉低电阻CC1和CC2引脚。当XC1136连接到T…

vuepress-----6、时间更新

# 6、时间更新 基于Git提交时间修改文字时间格式 moment # 最后更新时间 # 时间格式修改 下载库文件 yarn add momentconst moment require(moment); moment.locale(zh-cn)module.exports {themeConfig: {lastUpdated: 更新时间,},plugins: [[vuepress/last-updated,{trans…

Vue大屏自适应终极解决方案

v-scale-screenv-scale-screen是一个大屏自适应组件&#xff0c;在实际业务中&#xff0c;我们常用图表来做数据统计&#xff0c;数据展示&#xff0c;数据可视化等比较直观的方式来达到一目了然的数据查看&#xff0c;但在大屏开发过程中&#xff0c;常会因为适配不同屏幕而感…

作为搜索引擎,TikTok超过了谷歌

Rise at Seven通过分析不同行业的数千个关键词进行了研究&#xff0c;突出了用户在TikTok上搜索的100个单词和短语&#xff0c;比在谷歌上搜索的更多。 虽然承认“near me”和“what’s on”的搜索查询仍然是谷歌上最突出的搜索查询&#xff0c;但Rise at Seven得出的结论是&a…

MySQL之redo log

聊聊REDO LOG 为什么需要redolog&#xff1f; 那redolog主要是为了保证数据的持久化&#xff0c;我们知道innodb存储引擎中数据是以页为单位进行存储&#xff0c;每一个页中有很多行记录来存储数据&#xff0c;我们的数据最终是要持久化到硬盘中&#xff0c;那如果我们每进行…

Unity技美35——再URP管线环境下,配置post后期效果插件(post processing)

前两年在我的unity文章第10篇写过&#xff0c;后效滤镜的使用&#xff0c;那时候大部分项目用的还是unity的基础管线&#xff0c;stander管线。 但是现在随着unity的发展&#xff0c;大部分项目都用了URO管线&#xff0c;甚至很多PC端用的都是高效果的HDRP管线&#xff0c;这就…

re:Invent 构建未来:云计算生成式 AI 诞生科技新局面

文章目录 前言一、亚马逊云科技re:Invent二、亚马逊云科技re:Invent 2023 Adam Selipsky 主题演讲三、由亚马逊云科技思想领袖主持的深度探讨四、云计算是什么五、云计算机的主要服务模型六、云计算机的用途七、重构生成式AI 前言 活动介绍 回顾过去十几年&#xff0c;云计算已…

【从浅识到熟知Linux】基本指令之基本权限

&#x1f388;归属专栏&#xff1a;从浅学到熟知Linux &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;每日一句&#xff1a;用博客整理整理之前学过的知识&#xff0c;是个不错的选择。 文章前言&#xff1a;本文介绍Linux中的基本权限及相关指令用法并给出示例和…

基于深度学习的表情动作单元识别综述

论文标题&#xff1a;基于深度学习的表情动作单元识别综述 作者&#xff1a;邵志文1&#xff0c;2&#xff0c;周 勇1&#xff0c;2&#xff0c;谭 鑫3&#xff0c;马利庄3&#xff0c;4&#xff0c;刘 兵1&#xff0c;2&#xff0c;姚 睿1&#xff0c;2 发表日期&#xff1a…

MxL3706-AQ-R 2.0通道绑定同轴网络集成电路特性

MxL3706-AQ-R是Max线性公司的第三代MoCA2.0同轴网络控Z器SoC&#xff0c;可用于在现有的家庭同轴电缆上创建具有千兆位吞吐量性能的家庭网络。 该MxL3706-AQ-R工作在400MHz至1675MHz之间的无线电频率&#xff0c;并与satellite共存&#xff0c;电X和有线电视运营商的频率计划。…

毕业设计单片机可以用万能板吗?

毕业设计单片机可以用万能板吗? 可以是可以&#xff0c;就是焊接起来比较麻烦&#xff0c;特别是有好几个重复连线点的时候&#xff0c;检测起来就不那么容易了&#xff0c;而且布线看起来乱糟糟的&#xff0c;如果后期一不小心把线弄断了&#xff0c;查起来就更麻烦了&#x…

机器人与3D视觉 Robotics Toolbox Python 一 安装 Robotics Toolbox Python

一 安装python 库 前置条件需要 Python > 3.6&#xff0c;使用pip 安装 pip install roboticstoolbox-python测试安装是否成功 import roboticstoolbox as rtb print(rtb.__version__)输出结果 二 Robotics Toolbox Python样例程序 加载机器人模型 加载由URDF文件定义…

element ui 表格合计项合并

如图所示&#xff1a; 代码&#xff1a; <el-table height"400px" :data"tableData " borderstyle"width: 100%"stripe show-summaryref"table"id"table"> </el-table>监听表格 watch: { //监听table这个对象…