逻辑删除
基类自带逻辑删除;手写 SQL 必须自己带条件;列非空默认 0。
默认行为
实体基类 BaseDO.isDeleted 已标注逻辑删除,框架生成的语句自动追加 is_deleted = 0。
三条硬规则
- 查询对象不得声明
isDeleted字段:框架会强制忽略,写了没用却会误导读者。 - 手写 XML 不受自动追加覆盖,必须自己写上
is_deleted = 0。 - 该列必须
NOT NULL DEFAULT 0——允许 NULL 会让is_deleted != 1这类判断漏掉整批数据。
注意:手写 SQL 漏掉这一条,是最常见也最隐蔽的数据泄漏:测试环境数据量小看不出来,上线后表现为"有人看到了不该看的数据"。
什么时候用物理删除
验证码、临时票据这类天然有时效的表可以物理删除;业务主数据一律逻辑删除。判断标准很简单:出了问题需不需要追溯。
最后更新 2026-10-09编辑此页 →