开发者学堂课程【微服务+全栈在线教育实战项目演练(SpringCloud Alibaba+SpringBoot):项目技术点-MybatisPlus 实现逻辑删除】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/667/detail/11275
项目技术点-MybatisPlus 实现逻辑删除
目录:
一.物理删除
二.逻辑删除
简介:
●物理删除:
真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。
●逻辑删除:
假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态",之后在数据库中仍旧能看到此条数据记录。
(一)物理删除
1、根据 id 删除记录
@Test
public void testDeleteById()
int result=userMapper.deleteById(8L);
System.out.println(result);
2.批量删除
@Test
public void testDeleteBatchIds ()
int result.userMapper.deleteBatchIds(Arrays.asList(8,9,10));
System.out.println(result);
3.物理删除代码
//删除操作物理删除
@Test
public void testDeleteById0
int result = userMapper.deleteById(serializable:1L;
System.out.println(result);
(二)逻辑删除
(1)数据库中添加 deleted 字段
ALTER TABLE "user" ADD COLUMIN、deleted boolean
deleted tiny int 1 0
(2)实体类添加 deleted 字段
并加上@TableLogic 注解和@TableField(flI = FieldiIl.INSERT)注解
@TableLogic
@TableField(fill = FieldFill.INSERT)
private Integer deleted;
(3) 元对象处理器接口添加 deleted 的 inser 默认值
@Override
public void insertFill (Meta0bject meta0bject)
this.setFieldValByName("deleted",0,metaObject);
(4) application.properties 加入配置
此为默认值,如果你的默认值和 mp 默认的一样,该配置可无
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value-0
(5)在 MybatisPlusConfig 中注册 Bean
@Bean
public ISqlInjector sqlInjector()
return new LogicSqlInjector();
(6)测试逻辑删除
测试后发现,数据并没有被删除, deleted 字段的值由0变成了1
测试后分析打印的 sq 语句,是一条 update
注意:
被删除数据的 deleted 字段的值必须是0,才能被选取出来执行逻辑删除的操作
/**
测试逻辑删除
*/
@Test
public void testLogicDelete()
int result.userMapper.deleteById(1L);
System.out.println(result);