docs: 增补 MyBatis-Plus 使用规范\n\n- 明确 ServiceImpl 仅负责数据访问,不承载业务逻辑\n- 约定数据服务类命名为 XxxDataService,业务服务命名为 XxxService 等\n- 禁止在 MyBatis ServiceImpl 中使用 @Slf4j,避免与 MyBatis Log 冲突\n- 建议将 Entity/Mapper/ServiceImpl 封装在独立 data 包下,与业务服务层物理隔离
This commit is contained in:
parent
2c22213326
commit
6e75d23f1e
@ -3395,6 +3395,30 @@ fund-sys/
|
||||
| **分页** | pageNum, pageSize, total, list |
|
||||
| **版本** | v1, v2 在URL中体现 |
|
||||
|
||||
### 8.3 MyBatis-Plus 使用规范
|
||||
|
||||
1. **职责边界**
|
||||
- MyBatis-Plus 的 `ServiceImpl` / `IService` 实现类 **只负责数据访问、数据封装和转换**,不承载业务流程、业务校验、权限控制等逻辑;
|
||||
- 所有业务逻辑必须放在**业务服务层**(如 `XxxService` / `XxxDomainService`),通过组合调用 `XxxDataService`/Mapper 完成。
|
||||
|
||||
2. **命名规范:区分数据服务与业务服务**
|
||||
- 基于 MyBatis-Plus 的数据访问服务类,统一命名为:`XxxDataService` 或 `XxxDataServiceImpl`,例如:`UserDataService`;
|
||||
- 业务服务类命名为:`XxxService` / `XxxDomainService` / `XxxAppService`,例如:`UserService`;
|
||||
- 禁止出现既继承 `ServiceImpl` 又以 `XxxService` 命名、同时承载业务逻辑的“万能 Service”。
|
||||
|
||||
3. **日志规范:MyBatis Service 不使用 @Slf4j**
|
||||
- 任何继承 `ServiceImpl` 或实现 `IService` 的数据访问服务类,**禁止使用 Lombok 的 `@Slf4j` 注解**;
|
||||
- 如需记录业务日志,应在上层业务服务类中使用日志记录,或在数据服务中手动声明 `private static final Logger logger = LoggerFactory.getLogger(XxxDataService.class);` 且避免字段名 `log`,防止与 MyBatis 内部 `Log log` 冲突;
|
||||
- 避免出现 `log.info(...)` 这类调用 MyBatis `Log` 接口的错误用法。
|
||||
|
||||
4. **包结构规范:数据访问层独立归档**
|
||||
- 建议将 MyBatis 相关的 `ServiceImpl`、`Mapper`、`Entity` 等放在**独立的基础数据访问包**中,例如:
|
||||
- `com.fundplatform.sys.data.entity`
|
||||
- `com.fundplatform.sys.data.mapper`
|
||||
- `com.fundplatform.sys.data.service`
|
||||
- 业务服务层使用 `com.fundplatform.sys.service` / `com.fundplatform.sys.domain` 等包名,与数据访问层在物理结构上清晰分离;
|
||||
- Controller 只依赖业务服务层,不直接依赖 `ServiceImpl` 或 Mapper。
|
||||
|
||||
---
|
||||
|
||||
## 九、附录
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user