MyBatisPlus 逻辑删除演示

目录

一、数据库

二、实体类Entity 修改

三、逻辑插件

四、删除 Ctroller

五、测试

六、SpringBoot 配置方式

七、全局逻辑删除


一、数据库


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

二、实体类Entity 修改


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

/**
 * <p>
 * 讲师
 * </p>
 *
 * @author zhengzhaoxiang
 * @since 2020-06-01
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="EduTeacher对象", description="讲师")
public class EduTeacher implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableLogic
    @ApiModelProperty(value = "逻辑删除 1(true)已删除, 0(false)未删除")
    private Integer isDeleted;
}

三、逻辑插件


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

/**
 * @description:
 * @author: zzx
 * @createDate: 2020/6/1
 * @version: 1.0
 */
@Configuration
@ComponentScan(basePackages = {"com.edu.eduservice","com.edu.servicebase"})
@MapperScan(basePackages = {"com.edu.eduservice.mapper"})
public class myConfig {

    /**
     * 逻辑删除插件
     */
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
}

四、删除 Ctroller


/**
 * <p>
 * 讲师 前端控制器
 * </p>
 *
 * @author zhengzhaoxiang
 * @since 2020-06-01
 */
@RestController
@RequestMapping("/eduservice/edu-teacher")
public class EduTeacherController {
    @Autowired
    private EduTeacherService eduTeacherService;

    @DeleteMapping("{id}")
    public boolean removeTeacher(@PathVariable Integer id){
        boolean b = eduTeacherService.removeById(id);
        return b;
    }
}

五、测试


【1】测试工具

【2】数据库结果显示


以下为特殊需求设置


六、SpringBoot 配置方式


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

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

七、全局逻辑删除


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

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

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

 
 ----架构师成长路线,关注公众号获取----

猜你喜欢

转载自blog.csdn.net/zhengzhaoyang122/article/details/106479035