MybatisPlus中的删除和逻辑删除及区别介绍
删除又分为逻辑删除和物理删除,那么它们有什么区别呢?
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。
逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。
在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除与逻辑删除怎么实现的吧
首先假设我有这样一张表
实体类:
packagecom.atguigu.mybatis_plus.entity; importjava.util.Date; importcom.baomidou.mybatisplus.annotation.FieldFill; importcom.baomidou.mybatisplus.annotation.IdType; importcom.baomidou.mybatisplus.annotation.TableField; importcom.baomidou.mybatisplus.annotation.TableId; importcom.baomidou.mybatisplus.annotation.TableLogic; importlombok.Data; @Data publicclassUser{ @TableId(type=IdType.AUTO) privateLongid; privateStringname; privateIntegerage; privateStringemail; @TableField(fill=FieldFill.INSERT) privateDatecreateTime; //@TableField(fill=FieldFill.UPDATE) @TableField(fill=FieldFill.INSERT_UPDATE) privateDateupdateTime; }
userMapper接口:
packagecom.atguigu.mybatis_plus.mapper; importcom.atguigu.mybatis_plus.entity.User; importcom.baomidou.mybatisplus.core.mapper.BaseMapper; //继承BaseMapper后UserMapper就具有了CRUD功能 publicinterfaceUserMapperextendsBaseMapper{ }
一、物理删除
1、根据id删除记录
@Test publicvoidtestLogicDelete(){ intcount=userMapper.deleteById(1L);//删除id为1的数据 System.out.println("受影响的行数"+count); }
2、批量删除
@Test publicvoidtestDeleteBatchIds(){ intresult=userMapper.deleteBatchIds(Arrays.asList(2,3,4));//删除id为2,3,4的数据 System.out.println(result); }
结果:
物理删除比较简单,接下来我们看看逻辑删除怎么实现吧!
二、逻辑删除
(1)数据库修改,添加deleted字段
(2)实体类修改,添加deleted字段,并加上@TableLogic注解
/* 加@TableLogic的情况下,程序内部会将delete语句变为update语句 实际上我们写的代码并不需要做出什么改变 */ @TableLogic privateIntegerdeleted;
(3)测试
/** *逻辑删除 */ @Test publicvoidtestLogicDelete(){ intcount=userMapper.deleteById(5L); System.out.println("受影响的行数"+count); }
结果:
- 测试后发现,数据并没有被删除,deleted字段的值由0变成了1
- 测试后分析打印的sql语句,是一条update
- 注意:被删除前,数据的deleted字段的值必须是0,才能被选取出来执行逻辑删除的操作
(5)测试逻辑删除后的查询,MyBatisPlus中查询操作也会自动添加逻辑删除字段的判断
@Test publicvoidtestSelect(){ Listusers=userMapper.selectList(null);//查询所有记录 users.forEach(System.out::println);//遍历输出 }
结果:
总结
到此这篇关于MybatisPlus中的删除和逻辑删除及区别介绍的文章就介绍到这了,更多相关MybatisPlus删除和逻辑删除内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。