-
Notifications
You must be signed in to change notification settings - Fork 973
当前系统中逻辑删除的处理方式存在不一致性,部分采用手动SQL条件,部分可能遗漏,缺乏统一的自动化机制。 #99
Copy link
Copy link
Open
Description
现状分析
当前实现方式
- 手动SQL条件:在mapper XML文件中手动添加
deleted_flag = #{deletedFlag}条件 - 不统一:不同模块处理方式不一致,有些查询包含deleted_flag条件,有些不包含
- 易出错:依赖开发者手动添加条件,容易遗漏
具体表现
- 系统管理模块(system):PositionMapper.xml、EmployeeMapper.xml等包含deleted_flag条件
- 支持模块(support):FileMapper.xml、MessageMapper.xml、DictMapper.xml等不包含deleted_flag条件
技术可行性
系统已具备启用MyBatis-Plus逻辑删除的所有条件:
✅ 版本支持:MyBatis-Plus 3.5.12(支持逻辑删除功能)
✅ 字段存在:实体类中已有deletedFlag字段
❌ 缺少配置:未启用逻辑删除插件和相关配置
改进建议
方案一:启用MyBatis-Plus原生逻辑删除(推荐)
实施步骤:
- 在
MybatisPlusConfig.java中添加逻辑删除插件 - 在相关实体类中添加
@TableLogic注解 - 在配置文件中添加逻辑删除全局配置
优势:
- 统一自动化处理,无需手动添加SQL条件
- 减少开发人员工作量和出错概率
- 符合MyBatis-Plus最佳实践
- 性能更好(框架层面优化)
配置示例:
// MybatisPlusConfig.java
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
interceptor.addInnerInterceptor(new LogicDeleteInnerInterceptor());
return interceptor;
}// Entity类
@TableLogic
private Boolean deletedFlag;# application.yaml
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1
logic-not-delete-value: 0Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels