From 6e75d23f1e07508ebcce5fcc072118aa808facbf Mon Sep 17 00:00:00 2001 From: zhangjf Date: Tue, 17 Feb 2026 10:00:23 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=A2=9E=E8=A1=A5=20MyBatis-Plus=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E8=A7=84=E8=8C=83\n\n-=20=E6=98=8E=E7=A1=AE?= =?UTF-8?q?=20ServiceImpl=20=E4=BB=85=E8=B4=9F=E8=B4=A3=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E8=AE=BF=E9=97=AE=EF=BC=8C=E4=B8=8D=E6=89=BF=E8=BD=BD=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E9=80=BB=E8=BE=91\n-=20=E7=BA=A6=E5=AE=9A=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E6=9C=8D=E5=8A=A1=E7=B1=BB=E5=91=BD=E5=90=8D=E4=B8=BA?= =?UTF-8?q?=20XxxDataService=EF=BC=8C=E4=B8=9A=E5=8A=A1=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=91=BD=E5=90=8D=E4=B8=BA=20XxxService=20=E7=AD=89\n-=20?= =?UTF-8?q?=E7=A6=81=E6=AD=A2=E5=9C=A8=20MyBatis=20ServiceImpl=20=E4=B8=AD?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20@Slf4j=EF=BC=8C=E9=81=BF=E5=85=8D=E4=B8=8E?= =?UTF-8?q?=20MyBatis=20Log=20=E5=86=B2=E7=AA=81\n-=20=E5=BB=BA=E8=AE=AE?= =?UTF-8?q?=E5=B0=86=20Entity/Mapper/ServiceImpl=20=E5=B0=81=E8=A3=85?= =?UTF-8?q?=E5=9C=A8=E7=8B=AC=E7=AB=8B=20data=20=E5=8C=85=E4=B8=8B?= =?UTF-8?q?=EF=BC=8C=E4=B8=8E=E4=B8=9A=E5=8A=A1=E6=9C=8D=E5=8A=A1=E5=B1=82?= =?UTF-8?q?=E7=89=A9=E7=90=86=E9=9A=94=E7=A6=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/资金服务平台 FundPlatform 架构设计文档.md | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) 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。 + --- ## 九、附录