删除又分为逻辑删除和物理删除,那么它们有什么区别呢?
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据。
逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录。
在我们日常开发中,为了保留数据,经常会使用逻辑删除的方式进行数据删除,下面我们就来看看物理删除与逻辑删除怎么实现的吧
首先假设我有这样一张表
实体类:
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;
@Data
public 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、批量删除
@Test
public 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的情况下,程序内部会将delete语句变为update语句
实际上我们写的代码并不需要做出什么改变
*/
@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删除和逻辑删除内容请搜索亿速云以前的文章或继续浏览下面的相关文章希望大家以后多多支持亿速云!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。