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

java逻辑删除代码_MybatisPlus实现逻辑删除功能逻辑删除你有没有见过某些网站进行一些删除操作之后,你看不到记录了但是管理员却能够查看到。这里就运用到了逻辑删除。什么是逻辑删除?逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(deleted)或者说是状态字段(status)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。对应的SQL语句:updateusers…

大家好,又见面了,我是你们的朋友全栈君。

逻辑删除

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

什么是逻辑删除?

逻辑删除的本质是修改操作,所谓的逻辑删除其实并不是真正的删除,而是在表中将对应的是否删除标识(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);

}

}

执行结果:

4aad2c669d0df41c9750d73710b94b2a.png

查看表中数据:

b1ba977acfcc994de3f853f6dc1628f7.png

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/137189.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • windows 7 boot loader

    windows 7 boot loaderFrom:http://blog.csdn.net/richion/archive/2009/08/05/4414189.aspxWindow7的核心版本号是NT6.1,和vistaNT6.0还是属于一个系列的,因此采用了一样的启动管理机制。对于双系统来说,正如98和xp共存的双系统一样,xp和7共存的算系统安装也是要有先后顺序的。因为windows的启动管

    2022年10月12日
  • nginx 接口转发_nginx后端接口转发到内网

    nginx 接口转发_nginx后端接口转发到内网目前开发多数趋于前后端分离,后端开发人员有的时候懒得搭建前端环境,可是写后端又不便于联调,经常被这个困扰中,本文介绍如何用nginx转发。前提:有一套完整的环境,可以访问整个环境。环境地址,eghttp://wangzhi.com背景:开发人员不想搭建前端环境,可是又不便于联调。postman联调的话,参数拼接比较麻烦。步骤:1、本地项目启动,eg:localhost:80802、配置本地host127.0.0.1wangzhi.com说明:需要把环境地址,转到本地,

  • Jenkins 系列教程-史上最简单Jenkins教程,教你一天学会使用Jenkins利器「建议收藏」

    Jenkins 系列教程-史上最简单Jenkins教程,教你一天学会使用Jenkins利器「建议收藏」一、安装Git安装yum命令安装:yuminstall-ygit安装结果验证:git–versionNode安装(非必须)链接:Centos安装nodejsMaven安装文档:链接:Centos安装MavenJDK安装链接:Linux下安装javaJDK&部署ZookeeperJenKins安装jenkins官网:https://www.jenkins.io/zh/访问Jenkins的官方网站的downdolad

  • Oracle(11g)数据库安装详细图解教程

    Oracle(11g)数据库安装详细图解教程一、下载Oracle11gR2安装包(ForWindows)官网下载百度云盘(提取码:u3xw)下载后的安装包文件如下图所示:同时选中两个压缩包进行解压,解压文件会自动合并到名为database同一文件夹,如下图:进入database目录,双击setup.exe文件进行安装,如下图:首先会弹出黑窗口,不用管它,一会自己就消失了,如下图:…

  • 并发测试工具jmeter了解下?

    并发测试工具jmeter了解下?并发测试工具jmeter了解下?前言随着互联网规模的不断发展壮大,系统接口的并发要求也是越来越高了,虽然现在已经有了很多技术可以提升系统的并发性能,但是测试又遇到了新的问题,我们该如何模拟线上环境

  • jvm面试题2021_jvm运行原理及调优面试题

    jvm面试题2021_jvm运行原理及调优面试题2022最新JVM面试题1.JDK、JRE、JVM关系?2.启动程序如何查看加载了哪些类,以及加载顺序?3.class字节码文件10个主要组成部分?4.画一下jvm内存结构图?5.程序计数器6.Java虚拟机栈7.本地方法栈8.Java堆9.方法区10.运行时常量池?11.什么时候抛出StackOverflowError?12.Java7和Java8在内存模型上有什么区别?13.程序员最关注的两个内存区域?14.直接内存是什么?15.除了哪个区域外,虚拟机内存其他运行时区域都会发生OutOfMemo

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号