当前位置: 首页 > article >正文

Mybatis-Plus实现逻辑删除

数据库表

create table if not exists tb_student
(
    id          bigint auto_increment comment '主键id'
        primary key,
    name        varchar(8)    not null comment '姓名',
    gender      int           not null comment '性别;1代表男,2代表女',
    age         int           not null comment '年龄',
    data_status int default 1 not null comment '数据状态;1代表未被删除,0代表已被删除',
    create_time datetime      not null comment '创建时间',
    update_time datetime      not null comment '更新时间',
    constraint id
        unique (id)
)
    comment '学生表';

insert into tb_student (id, name, gender, age, data_status, create_time, update_time)
values (null, '艾伦', 1, 15, 1, now(), now());

StudentEntity

@TableLogic注解有value和delval两个属性,value的值代表数据未被删除,与data_status字段默认的值保持一致,delval的值代表数据已被删除。

import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "tb_student")
public class StudentEntity {

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @TableField(value = "name")
    private String name;

    @TableField(value = "gender")
    private Integer gender;

    @TableField(value = "age")
    private Integer age;

    @TableLogic(value = "1", delval = "0")
    private Integer dataStatus;

    @TableField(value = "create_time")
    private LocalDateTime createTime;

    @TableField(value = "update_time")
    private LocalDateTime updateTime;
}

测试

    @Autowired
    private StudentMapper studentMapper;

    @Test
    public void test() {
        studentMapper.deleteById(1);
    }

查看SQL

==>  Preparing: UPDATE tb_student SET data_status=0 WHERE id=? AND data_status=1
==> Parameters: 1(Integer)
<==    Updates: 1

yml配置文件

在大量的业务需求下,使用@TableLogic注解比较繁琐,而且属性容易写错,推荐使用yml配置文件进行全局设置。

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: dataStatus #写属性名称,自动映射字段名
      logic-not-delete-value: 1      #代表数据未被删除
      logic-delete-value: 0          #代表数据已被删除

http://www.kler.cn/a/156256.html

相关文章:

  • [JAVAEE] 面试题(四) - 多线程下使用ArrayList涉及到的线程安全问题及解决
  • 云运维基础
  • 自由学习记录(21)
  • Go语言 实现将中文转化为拼音
  • 探索Python的HTTP利器:Requests库的神秘面纱
  • 【ACM出版】第四届信号处理与通信技术国际学术会议(SPCT 2024)
  • C++ 实现微信退款和对账示例代码
  • ASP.NET 网上选课系统的设计与实现
  • 二叉查找树和红黑树
  • 卖家低价侵权了怎么处理
  • 一款自动帮你生成UI界面和代码的AI神器
  • MySQL练习题,学生成绩查询练习题,附带答案
  • JIRA部分数据库结构
  • Spring AOP解析
  • 基于Java SSM框架实现美好生活九宫格日志网站系统项目【项目源码+论文说明】
  • Docker push 命令
  • 在CentOS7下安装Docker与Docker Compose
  • 举例说明自然语言处理(NLP)技术。
  • 二分查找算法:搜索有序数组中目标元素的利器
  • 松下、书客、明基护眼台灯值不值得买?热门护眼台灯真实测评!
  • 客户销售目标拆解:数据驱动的方法和策略
  • 【LeeCode】142.环形链表II
  • 开启gitlab中远程连接pgsql
  • 燃料电池汽车市场分析:预计2028年将达到118亿美元
  • 前端需要掌握的技术有哪些方面
  • Kubernetes(K8s)Service详解-07