数据与写入

逻辑删除

基类自带逻辑删除;手写 SQL 必须自己带条件;列非空默认 0。

默认行为

实体基类 BaseDO.isDeleted 已标注逻辑删除,框架生成的语句自动追加 is_deleted = 0。

三条硬规则

  • 查询对象不得声明 isDeleted 字段:框架会强制忽略,写了没用却会误导读者。
  • 手写 XML 不受自动追加覆盖,必须自己写上 is_deleted = 0。
  • 该列必须 NOT NULL DEFAULT 0——允许 NULL 会让 is_deleted != 1 这类判断漏掉整批数据。

注意:手写 SQL 漏掉这一条,是最常见也最隐蔽的数据泄漏:测试环境数据量小看不出来,上线后表现为"有人看到了不该看的数据"。

什么时候用物理删除

验证码、临时票据这类天然有时效的表可以物理删除;业务主数据一律逻辑删除。判断标准很简单:出了问题需不需要追溯。

最后更新 2026-10-09编辑此页 →