逻辑删除

你有没有见过某些网站进行一些删除操作之后,你看不到记录了但是管理员却能够查看到。这里就运用到了逻辑删除。

什么是逻辑删除?

逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(deleted)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。

对应的SQL语句:

update user set deleted=1 where id =1 and deleted=0

update 表名 set deleted = 1 where id = 1;语句表示,在该表中将id为1的信息进行逻辑删除,那么客户端进行查询id为1的信息,服务器就不会提供信息。倘若想继续为客户端提供该信息,可将 deleted 更改为 0 。

查找的话呢是通过加上条件deleted=0

select * from user where deleted=0

来自官网的配置,这里直接复制

第一步 添加全局配置

mybatis-plus:

global-config:

db-config:

logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2)

logic-delete-value: 1 # 逻辑已删除值(默认为 1)

logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

第二步、在实体类上添加@TableLogic注解

@TableLogic

private Integer deleted;//对应的实体字段,实体字段需要根据数据库字段命名

这样就会在预编译sql中自动给这个字段设置的值就是全局配置设置的值

当然也可以设置局部生效 单个实体生效(不推荐)只需要在注解中添加

完整的实体示例

import com.baomidou.mybatisplus.annotation.TableLogic;

import lombok.AllArgsConstructor;

import lombok.Data;

import lombok.NoArgsConstructor;

import java.io.Serializable;

import java.time.LocalDateTime;

@Data

@AllArgsConstructor

@NoArgsConstructor

public class User implements Serializable {

private long id;

private String name;

private long age;

private String email;

private long managerId;

private LocalDateTime createTime;

private LocalDateTime updateTime;

private long version;

@TableLogic(value = "0",delval = "1") //value表示逻辑未删除值,delval表示逻辑删除设置的值

private long deleted;

}

当然不建议这样操作,一般直接@TableLogic然后通过全局设置即可

测试代码,其中的传入的是主键 刘红雨的id

import org.junit.jupiter.api.Test;

import org.junit.runner.RunWith;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import top.huashengshu.demo.dao.UserMapper;

@SpringBootTest

@RunWith(SpringRunner.class)

class DemoApplicationTest {

@Autowired

UserMapper userMapper;

@Test

public void deleteTest(){

int rows = userMapper.deleteById(1094592041087729666L);

System.out.println("影响行数:"+rows);

}

}

执行结果:

查看表中数据:

到此这篇关于MybatisPlus实现逻辑删除功能的文章就介绍到这了,更多相关MybatisPlus 逻辑删除内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

java逻辑删除代码_MybatisPlus实现逻辑删除功能相关推荐

  1. java web逻辑删除代码_MyBatis-Plus之逻辑删除的实现

    特别是互联网项目,对于数据一般是不能删除的(涉及到后面的数据分析),这就涉及到逻辑删除.所谓逻辑删除指的是数据并不是真正的删除,只是改数据表对应数据的状态(数据表中通常有一列叫delFlag,以此标识 ...

  2. think php批量删除代码,ThinkPHP实现批量删除数据的代码实例

    ThinkPHP实现批量删除数据的代码实例 ThinkPHP实现批量删除数据原理很简单,只需在模板页面里面写上这样传过来就是一个数组,action的删除函数del()如下: /** **删除函数支持删 ...

  3. php软删除代码,PHP laeavel软删除以及软删除还原 易错点

    PHP laeavel软删除以及软删除还原 易错点 PHP laeavel软删除以及软删除还原 易错点 首先 数据库字段添加deleted_at字段 然后在模型层中引入 SoftDeletes类 并引 ...

  4. java注册用户代码_java用户管理注册功能 含前后台代码

    本文实例为大家分享了java用户注册功能,供大家参考,具体内容如下 主页面: 浏览器显示: 代码实现: 用户信息管理 用户注册: 姓名: 密码: 查看所有用户 注册功能: 浏览器显示: 1)注册成功: ...

  5. Java购物车前端代码_java web实现购物车功能的java购物车代码示例代码

    /** *用户登录 * *@ */ (){ //用户登录的时候,去读取,并且进行持久话操作,更多的登录操作这里省略啦.... (); } /** *加入购物车br我的Java学习交流QQ群:我们一起学 ...

  6. GitHub基础教程(3) —— 如何删除代码库

    GitHub基础教程(3) -- 如何删除代码库 如果你想删除某个代码库,首先进入该库,点击右上方Settings 进入设置滑到最下方,点击Delete this repository 接下来你需要输 ...

  7. java培训教程分享:Java编写软件代码自动提示功能

    本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能,很多零基础和初学java的同学们对这一块还不是很了解,Eclipse for android 实现代码自动提示智能提示功能 ...

  8. 知识库递归编程java和prolog代码;逻辑语言Prolog简介(附24555字PDF发“递归prolog简介”下载)

    知识库递归编程java和prolog代码:逻辑语言Prolog简介(附24555字PDF发"递归prolog简介"下载) 数据简化DataSimp 今天 数据简化DataSimp导 ...

  9. 状态机编程思想:删除代码注释(支持C/C++和Java)

    前言 有时为了信息保密或是单纯阅读代码,我们需要删除注释. 之前考虑过正则表达式,但是感觉实现起来相当麻烦.而状态机可以把多种情况归为一类状态再行分解,大大简化问题.本文就是基于状态机实现的. 删除C ...

  10. LVM逻辑卷管理器,部署逻辑卷,扩容逻辑卷,缩小逻辑卷,删除逻辑卷

    1.LVM逻辑卷管理器 硬盘设备管理技术虽然能够有效地提高硬盘设备的读写速度以及数据的安全性,但是在硬盘分好区或者部署为RAID 磁盘阵列之后,再想修改硬盘分区大小就不容易了.换句话说,当用户想要随着 ...

最新文章

  1. 大厂技术资料:Redis+Nginx+Spring全家桶+Dubbo精选
  2. python二维数组初始化
  3. python3 open函数_python中open函数的基本用法示例
  4. 《Java编程思想》学习笔记9——集合容器高级
  5. OpenGL延迟着色之一
  6. c语言二分法查找一个数_算法简解-二分查找
  7. java map 值排序_使用Java8 Stream API对Map类型按照键或值进行排序
  8. 《白鹿原》金句摘抄(二)
  9. RHEL4- ssh服务(二)ssh服务器的配置和启动
  10. 推荐免费的Windows Mobile截屏软件
  11. 织梦mysql安装教程视频教程_dedecms织梦模板安装教程视频/图文步骤(模板秀出品)...
  12. 红米note 4x Android 8,红米note 4X升级安卓7.0:小米MIUI8第331周公测
  13. springboot官方文档PDF下载指北
  14. LGSVL与Apollo5.0联合仿真
  15. 华硕x8aip_华硕X8AIP可以升级么?如果可以……求升级建议……
  16. 国税局计算机硬件,国家税务总局辽宁省税务局 工作动态 【盘税稽查】积极开展计算机兼容改造专项工作...
  17. facebook 添加好友_如何对Facebook帖子添加不同的React(如心脏或表情符号)
  18. 第8章 - 异构系统的协同控制及最优控制 --> 最优控制
  19. 数据赋能 兴业惠民 | 山东省第三届数据应用创新创业大赛潍坊分赛场火热报名中
  20. linux如何查看python的版本_Linux环境下如何查看Python版本号

热门文章

  1. Qt创建桌面快捷方式
  2. MyBatis--逆向工程
  3. 服务器无法通过系统,Day 10246 服务器无法通过系统非页面共享区来进行分配,因为服务器已达非页面共享分配的配置极限...
  4. 腾讯元老上市公司CTO赚够钱后辞职,到安徽隐居,每天对着200亩地发呆
  5. vue3.0脚手架的搭建
  6. iso镜像添加软件包_ubuntu安装 win7_怎么把自己需要的程序添加到WIN7的原版ISO镜像中? - Win7之家...
  7. 卡方检验python程序_卡方检验及其python实现
  8. js设计模式的讲解与应用 - 【单例模式】
  9. 正大国际琪貨:为什么资深交易者更倾向于裸K?
  10. 于仕琪老师libfacedetection最新开源代码使用测试配置