一、数据库


数据库中添加逻辑删除字段:

二、实体类Entity 修改


实体类逻辑删除字段上加上 @TableLogic注解,字段支持所有数据类型(推荐使用 Integer,Boolean,LocalDateTime),如果使用LocalDateTime,建议逻辑未删除值设置为字符串null,逻辑删除值只支持数据库函数例如now()。

 1 /**
2 * <p>
3 * 讲师
4 * </p>
5 *
6 * @author zhengzhaoxiang
7 * @since 2020-06-01
8 */
9 @Data
10 @EqualsAndHashCode(callSuper = false)
11 @Accessors(chain = true)
12 @ApiModel(value="EduTeacher对象", description="讲师")
13 public class EduTeacher implements Serializable {
14
15 private static final long serialVersionUID = 1L;
16
17 @TableLogic
18 @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
19 private Integer isDeleted;
20 }

三、逻辑插件


Config 配置类中配置逻辑删除插件

 1 /**
2 * @description:
3 * @author: zzx
4 * @createDate: 2020/6/1
5 * @version: 1.0
6 */
7 @Configuration
8 @ComponentScan(basePackages = {"com.edu.eduservice","com.edu.servicebase"})
9 @MapperScan(basePackages = {"com.edu.eduservice.mapper"})
10 public class myConfig {
11
12 /**
13 * 逻辑删除插件
14 */
15 @Bean
16 public ISqlInjector sqlInjector() {
17 return new LogicSqlInjector();
18 }
19 }

四、删除 Ctroller


 1 /**
2 * <p>
3 * 讲师 前端控制器
4 * </p>
5 *
6 * @author zhengzhaoxiang
7 * @since 2020-06-01
8 */
9 @RestController
10 @RequestMapping("/eduservice/edu-teacher")
11 public class EduTeacherController {
12 @Autowired
13 private EduTeacherService eduTeacherService;
14
15 @DeleteMapping("{id}")
16 public boolean removeTeacher(@PathVariable Integer id){
17 boolean b = eduTeacherService.removeById(id);
18 return b;
19 }
20 }

五、测试


【1】测试工具

【2】数据库结果显示


以下为特殊需求设置


六、SpringBoot 配置方式


application.yml 加入配置(如果你默认值0表示未删除,1表示删除和mp默认的一样,该配置可无):当你用11表示删除,10表示未删除时,可以用此配置来进行修改,具体数字自己定义。

1 mybatis-plus:
2 global-config:
3 db-config:
4 logic-delete-field: flag #全局逻辑删除字段值 3.3.0开始支持,详情看下面。
5 logic-delete-value: 1 # 逻辑已删除值(默认为 1)
6 logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)

七、全局逻辑删除


从 3.3版本开始,如果公司代码比较规范,比如统一了全局都是 flag可修改)为逻辑删除字段。使用此配置则不需要在实体类上添加 @TableLogic。但如果实体类上有 @TableLogic 则以实体上的为准,忽略全局。 即先查找注解再查找全局,都没有则此表没有逻辑删除。yml 配置如下:

1 mybatis-plus:
2 global-config:
3 db-config:
4 logic-delete-field: flag #全局逻辑删除字段值

附件说明:逻辑删除是为了方便数据恢复和保护数据本身价值等等的一种方案,但实际就是删除。如果你需要再查出来就不应使用逻辑删除,而是以一个状态去表示。
如: 员工离职,账号被锁定等都应该是一个状态字段,此种场景不应使用逻辑删除。若确需查找删除数据,如老板需要查看历史所有数据的统计汇总信息,请单独手写sql。

MyBatisPlus 逻辑删除演示的更多相关文章

  1. mybatis-plus逻辑删除

    MP(mybatis plus)已经大大简化了我们好多的开发操作,基本的增删改查都有了,包括代码生成等等,今天想说的是它的逻辑删除功能.我们都在数据库设计时候经常会有is字段,表示是否删除,为了留下员 ...

  2. mybatis_plus实现自动填充和逻辑删除

    自定义填充 设置自定义填充规则 import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.i ...

  3. spring boot项目自定义数据源,mybatisplus分页、逻辑删除无效解决方法

    Spring Boot项目中数据源的配置可以通过两种方式实现: 1.application.yml或者application.properties配置 2.注入DataSource及SqlSessio ...

  4. Spring boot+Mybatisplus用AR模式实现逻辑删除操作

    Mybatisplus的AR模式 Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录.ActiveRecord ...

  5. 小书MybatisPlus第8篇-逻辑删除实现及API细节精讲

    本文为Mybatis Plus系列文章的第8篇,前7篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总 ...

  6. 【mybatis-plus】分页、逻辑删除

    通过mybatis-plus实现分页,也是很简单,插件大法. 一.分页 1.配置分页插件 把分页的插件也配置到统一的配置类里: @Configuration // 配置扫描mapper的路径 @Map ...

  7. Java开发学习(四十八)----MyBatisPlus删除语句之逻辑删除

    1.逻辑删除 接下来要讲解是删除中比较重要的一个操作,逻辑删除,先来分析下问题: 这是一个员工和其所签的合同表,关系是一个员工可以签多个合同,是一个一(员工)对多(合同)的表 员工ID为1的张业绩,总 ...

  8. mybatis配置的逻辑删除不好使了

    在使用mybatisplus中,可使用逻辑删除.案例中,使用mybatisplus逆向生成model,使用delete_status为识别逻辑删除字段. springboot 中配置启动逻辑删除 my ...

  9. Lind.DDD.ILogicDeleteBehavor~逻辑删除的实现

    回到目录 关于逻辑删除 对于逻辑删除之前的做法是在实体类中加个字段,一般是status,其中一种状态是删除,当然也有其它做法,如加个bool的字段IsDeleted,这些其实都过于武断,即它在基类里加 ...

  10. mybatis 乐观锁和逻辑删除

    本篇介绍easymybatis如配置乐观锁和逻辑删除. 乐观锁 easymybatis提供的乐观锁使用方式跟JPA一样,使用@Version注解来实现.即:数据库增加一个int或long类型字段ver ...

随机推荐

  1. el-dropdown-item 添加点击 事件无效 (vue)

    如图 无效!!! 为什么呢?? 想了一下,可能是因为 el-dropdown-item   没有自定义click事件 so! 解决办法就是  添加原生事件  :  @click.native   还有 ...

  2. 网络IO模型_01

    4种情况: 1.输入操作:等待数据到达套接字接收缓冲区: 2.输出操作:等待套接字发送缓冲区有足够的空间容纳将要发送的数据: 3.服务器接收连接请求:等待新的客户端连接请求的到来: 4.客户端发送连接 ...

  3. halcon学习

    apply_metrology_model: 目标和背景灰度差别很小,但目标大概位置确定,需要确定目标位置的圆或者矩形: ball:圆形或矩形和图像其他部分相比为特殊图样

  4. mysql允许root用户在任何地方进行远程登录,并具有所有库任何操作权限

    在本机先使用root用户登录mysql: mysql -u root -p"youpass" 进行授权操作: mysql>GRANT ALL PRIVILEGES ON *. ...

  5. 解决方案-Jmeter在CLI模式下无法生成html报告文件

    出错场景: 在CLI模式下运行jmeter,将 jtl 结果转为 html 报告时,提示An error occurred: Data exporter "html" is una ...

  6. Jetlinks物联网基础平台 前端运行项目遇到的问题

    电脑中的环境要必备 node.js和yarn(需要将他们都添加到环境变量中,否则会报错) 1.在github上面拉取代码 $ git clone https://github.com/jetlinks ...

  7. Jmeter四、jmeter脚本组成和组件搭配

    一.jmeter脚本开发原则 简单:去除无关的组件,同时能复用的尽量复用. 正确:对脚本或者业务正确性进行必要的判断,不能少也不能多(200) 高效:部分组件仅仅在脚本开发模式使用,在真正生产环境下不 ...

  8. vue多图片上传组件

    <template> <!-- 上传控件 用法: <upload-widget v-model="imgUrl"></upload-widget ...

  9. ajax高级(请求服务器脚本,数据库, ajxa xml文件)

    请求jsp与请求普通文件不通过的地方,请求jsp可能会传参,比如搜索,用户名,页码这些 html部分:<input type="text" id="txt1&quo ...

  10. Java中继承相关知识点

    继承 1.继承概述 继承是面向对象的三大特征之一.可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法 1.1 继承的格式 格式:public class 子类名 extends ...