mybatisPlus-逻辑删除

承接:mybatisPlus-删除测试

物理删除:从数据库中直接移除.

逻辑删除:在数据库中没有移除,而是通过一个变量让它失效. deleted = 0 => deleted = 1 (管理员可以查看被删除的记录,防止数据的丢失,类似于回收站)

1 在数据库user表中添加逻辑删除字段

2 在User实体类中添加对应的属性

src/main/java/com/lv/mybatis_plus/pojo/User.java

@TableLogic //逻辑删除注解
private Integer deleted;

3 在配置类中注册逻辑删除组件

src/main/java/com/lv/mybatis_plus/pojo/User.java

//注册逻辑删除组件
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}

4 在配置文件中编写逻辑删除的配置

src/main/resources/application.properties

#配置逻辑删除
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0

5 在测试类中修改根据id删除的方法,运行

src/test/java/com/lv/mybatis_plus/MybatisPlusApplicationTests.java

//根据id删除
@Test
public void testDeleteById(){
userMapper.deleteById(1L);
}

6 查看数据库

7 查看控制台日志输出

通过查看sql语句,能够看出运行的是更新操作,并不是删除操作,记录依然在数据库中,但是deleted值已经变化了

8 再运行一下查询方法,查询id为1的用户

//测试查询
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}

9 查看控制台

观察查询结果和sql语句发现.在查询时会自动拼接deleted字段,所以我们查询的时候会过滤掉逻辑删除的数据,但是数据依旧存在数据库.

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示