航佳网站建设,东莞中小企业网站建设,深圳龙岗有什么好玩的地方,wordpress无域名系列文章目录 提示#xff1a;这里可以添加系列文章的所有文章的目录#xff0c;目录需要自己手动添加 MyBatisPlus之逻辑删除 提示#xff1a;写完文章后#xff0c;目录可以自动生成#xff0c;如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是逻辑删…系列文章目录 提示这里可以添加系列文章的所有文章的目录目录需要自己手动添加 MyBatisPlus之逻辑删除 提示写完文章后目录可以自动生成如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是逻辑删除二、逻辑删除的使用三、自动填充自动填充步骤 总结 前言
提示这里可以添加本文要记录的大概内容
在学习MyBatisPlus的过程中逻辑删除是一个比较重要的知识点。逻辑删除是指使用一个特殊的字段来表示数据库表中的一条记录是否被删除了或是否存在例如为数据库表中的每一条记录都增加一个is_delete字段当is_delete为1时表示该记录已经被删除了当is_delete为0时表示该记录还有效。与逻辑删除相对的就是物理删除指直接从数据库中删除记录。
逻辑删除是为了方便数据恢复和保护数据本身价值等的一种方案但实际就是删除。如果需要频繁查出来看就不应使用逻辑删除而是以一个状态去表示。
希望通过本文的介绍大家对MyBatisPlus的逻辑删除有一个初步的了解。后续会详细介绍逻辑删除的实现在此基础上。 提示以下是本篇文章正文内容下面案例可供参考
一、什么是逻辑删除
逻辑删除是一种用于表示数据删除状态的数据处理方式。在逻辑删除中数据并没有从数据库中真正被删除而是通过标记或更新一个字段来表示该数据已被删除。
常见的实现方式是在数据库表中添加一个名为is_deleted的字段并将其设置为1或true来表示数据已被删除设置为0或false来表示数据未被删除。这样在查询数据时可以通过添加条件来过滤出已被删除的数据。此时增删改查的Sql语句发生变化
插入: 不作限制查找: 追加where条件过滤掉已删除数据。例如 select id,name,deleted from user where deleted0更新: 追加where条件防止更新到已删除数据。删除: 转变为更新例如 update user set deleted1 where id 1 and deleted0
逻辑删除的好处是可以保留数据的历史记录以便在需要时进行恢复或审计。同时它还可以避免由于误操作或数据完整性问题导致的数据丢失。
需要注意的是逻辑删除只是一种数据处理方式并不代表数据真正被删除。在实际应用中需要根据具体情况选择合适的数据处理方式并确保数据的安全性和完整性。
二、逻辑删除的使用
1.在配置文件配置逻辑删除
# mybatis-plus相关配置
mybatis-plus:# 全局配置global-config:db-config:# 全局逻辑删除的字段名logic-delete-field: deleted# 逻辑已删除值(默认为 1)logic-delete-value: 1# 逻辑未删除值(默认为 0)logic-not-delete-value: 0
2.修改实体类添加逻辑删除属性
Data
NoArgsConstructor
AllArgsConstructor
public class Student extends ModelStudent {TableId(value sid)private Integer id;TableField(sname)private String name;private String email;private String gender;private Integer age;Versionprivate Integer version;TableLogicprivate Integer deleted;
}
3.修改数据库表添加一列整型deleted字段并设置默认值为0 4.测试删除和查询方法会看到删除时将deleted字段变为1查询时添加条件deleted0
三、自动填充
因为存在逻辑删除字段所以在向数据库插入数据时都需要将deleted字段的值设置为 0。每次插入数据都要设置这个值非常繁琐。因此MyBatis-Plus 提供了自动填充功能来解决这个问题。
自动填充步骤
1.为实体类的自动填充字段添加TableField
TableLogic
// 自动填充字段
TableField(fill FieldFill.INSERT)
private Integer deleted;
填充策略
DEFAULT默认不处理INSERT插入操作填充字段UPDATE更新操作填充字段INSERT_UPDATE插入操作和更新操作均填充字段
2.自定义填充类实现MetaObjectHandler接口
Component
public class MyMetaObjectHandler implements MetaObjectHandler {/*** 插入时填充逻辑* param metaObject 元对象*/Overridepublic void insertFill(MetaObject metaObject) {/*** 参数1填充字段名* 参数2参数值* 参数3元对象*/this.setFieldValByName(deleted, 0, metaObject);}/*** 更新时填充逻辑* param metaObject*/Overridepublic void updateFill(MetaObject metaObject) {}
} 总结
提示这里对文章进行总结
什么是逻辑删除逻辑删除是指文件或数据没有被真正删除只是通过对数据进行标注使其无法被识别到。这种删除操作通常是可逆的即可以使用适当的工具或软件将删除的文件或数据恢复出来。常规逻辑删除在数据库表中添加一个is_delete字段值为0表示数据未删除值为1表示数据已删除。插入数据时该字段默认为0。删除数据时将该值设置为1。查询和更新数据时都将is_delete0作为条件只查询和更新未删除的数据。