MyBatis-Plus逻辑删除

前文概要:《MyBatis-Plus使用入门》

我们先为实体类增加逻辑删除字段,并且表明逻辑删除的注解。

// 逻辑删除,0-未删除,1-已删除
@TableLogic(value = "0", delval = "1")
private Integer deleted;

然后,数据库表新增表示逻辑删除的字段:

ALTER TABLE zhangxun.zx_user DROP COLUMN deleted;
ALTER TABLE zhangxun.zx_user ADD deleted INT DEFAULT 0 NULL COMMENT '0-未删除;1-已删除';

这样就可以在对User进行删除时,并不是进行物理删除,而是利用deleted字段做逻辑删除了。

UPDATE zx_user SET deleted=1 WHERE user_id=? AND deleted=0

上面的例子只是对User实体进行删除时才有效果,如果想对全局实体类都做这样的配置,那么所有的实体类都得增加如上的逻辑删除字段和注解及其配置。其实还有一种全局配置的方法,使得实体类中只需要如下这样写,具体的删除逻辑定义写在配置文件中。

// 逻辑删除
@TableLogic
private Integer deleted;
# mybatis-plus逻辑删除全局配置
global-config.db-config.logic-delete-value=1
global-config.db-config.logic-not-delete-value=0

如此也能达到相同的效果。需要注意的事项如下:

  • 执行逻辑删除,虽然是执行update语句,但是自动填充审计字段并不会被更新,仅仅更新deleted字段;

    UPDATE zx_user SET deleted=1 WHERE user_id=? AND deleted=0
    
  • 执行查询和修改操作时,都会默认加上deleted查询条件来查出未被删除的数据;

    UPDATE zx_user SET user_name=?, age=?, update_by=?, update_date=? WHERE deleted=0 AND (user_name = ?)
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容