前文概要:《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 = ?)