时间:2021-05-20
删除又分为逻辑删除和物理删除,那么它们有什么区别呢?
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。
逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。
在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除与逻辑删除怎么实现的吧
首先假设我有这样一张表
实体类:
package com.atguigu.mybatis_plus.entity;import java.util.Date;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableLogic;import lombok.Data;@Datapublic class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; @TableField(fill = FieldFill.INSERT) private Date createTime; // @TableField(fill = FieldFill.UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; }userMapper接口:
package com.atguigu.mybatis_plus.mapper;import com.atguigu.mybatis_plus.entity.User;import com.baomidou.mybatisplus.core.mapper.BaseMapper;// 继承BaseMapper后UserMapper就具有了CRUD功能public interface UserMapper extends BaseMapper<User>{}一、物理删除
1、根据id删除记录
@Test public void testLogicDelete() { int count = userMapper.deleteById(1L); // 删除id为1的数据 System.out.println("受影响的行数"+count); }2、批量删除
@Testpublic void testDeleteBatchIds() { int result = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4)); // 删除id为2,3,4的数据 System.out.println(result);}结果:
物理删除比较简单,接下来我们看看逻辑删除怎么实现吧!
二、逻辑删除
(1)数据库修改,添加 deleted字段
(2)实体类修改,添加deleted 字段,并加上 @TableLogic 注解
@TableLogic private Integer deleted;(3)测试
/** * 逻辑删除 */ @Test public void testLogicDelete() { int count = userMapper.deleteById(5L); System.out.println("受影响的行数"+count); }结果:
(5)测试逻辑删除后的查询,MyBatis Plus中查询操作也会自动添加逻辑删除字段的判断
@Test public void testSelect() { List<User> users = userMapper.selectList(null); // 查询所有记录 users.forEach(System.out::println); // 遍历输出 }结果:
总结
到此这篇关于MybatisPlus中的删除和逻辑删除及区别介绍的文章就介绍到这了,更多相关MybatisPlus删除和逻辑删除内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
1、问题背景:在开发中,我们经常会有逻辑删除和唯一索引同时使用的情况。但当使用mybatisplus时,如果同时使用逻辑删除和唯一索引,会报数据重复Duplic
开发调试的时候发现MybatisPlus的逻辑删除失效了,看了下配置文件发现没有问题,通过查看以下源码发现逻辑删除需要注入的bean,查看这个bean的源码如下
数据库删除语句的分别介绍:Delete:用于删除表中的行(注:可以删除某一行;也可以在不删除表的情况下(即意味着表的结构、属性、索引完整)删除所有行)语法:删除
本文介绍SQLServer中如何删除表,如何删除表中的数据。在删除表数据时有delete和truncate两种方法,delete和truncate有什么区别呢?
当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分别介绍。一、delete语句(1