MybatisPlus - [05] 逻辑删除
题记部分
一、物理删除&逻辑删除
物理删除:delete from table_name where xxx = ?;
逻辑删除:update table_name set deleted = 0 where xxx = ?;
二、测试
(1)增加逻辑删除字段deleted(默认1,1:存在,0:删除)
alter table user add column deleted int(1) default 1 comment '逻辑删除' after version;
(2)POJO实体类增加属性
package com.harley.pojo;
import com.baomidou.mybatisplus.annotation.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import java.util.Date;
/**
* @author harley
* @date 2024/06/06 17:30
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@Version
private Integer version;
@TableLogic // 逻辑删除
private Integer deleted;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
(3)配置 application.properties
spring.application.name: mybatis-plus
# 数据库连接配置
spring.datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?useSSL=false&userUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: '!QAZ2wsx'
mybatis-plus:
global-config:
# 配置逻辑删除
db-config:
# 删除为0
logic-delete-value: 0
# 存在为1
logic-not-delete-value: 1
configuration:
# 配置日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
(4)测试删除
- 首先查询user表中的数据,底层SQL会查询数据库中
deleted=1
的数据。
- 漩涡鸣人开启仙人模式干掉6个佩恩
@Test
void testDelete(){
int res = userMapper.deleteBatchIds(Arrays.asList(7L,8L,9L,10L,11L,12L));
if (res > 0){
System.out.println("漩涡鸣人开启仙人模式干掉了"+res+"个佩恩");
}
}
但是,查看后台数据库,会发现“删除”的记录仍然存在,只是deleted变为了0
— 业精于勤荒于嬉,行成于思毁于随 —
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南