diff --git a/doc/资金服务平台 FundPlatform 架构设计文档.md b/doc/资金服务平台 FundPlatform 架构设计文档.md index eec8e3a..3211a44 100644 --- a/doc/资金服务平台 FundPlatform 架构设计文档.md +++ b/doc/资金服务平台 FundPlatform 架构设计文档.md @@ -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。 + --- ## 九、附录