Mapper / Domain
职责
domain — 表映射实体
- 与 MySQL 表一一对应(或明确的主从关系)
- 使用项目元数据注解
@MpTable、@MpField、@MpId描述表结构(与 Flyway 迁移协同) - 不含 HTTP 或业务流程;仅为持久化层数据结构
mapper — 数据访问接口
- 继承 MyBatis-Plus
BaseMapper<实体> - 提供单表 CRUD 及模块内声明的自定义查询方法
- Bean 名称经
FqcnMapperBeanNameGenerator处理,避免多模块同名 Mapper 冲突
repository(可选)
部分模块(如 ecshopx-goods)在 Mapper 之上增加 repository 包,封装复杂查询与写入语义,供 Service 注入。详见 Bundle。
放置位置
ecshopx-<domain>/src/main/java/cn/shopex/ecshopx/<domain>/
├── domain/ # 实体
├── mapper/ # Mapper 接口
└── repository/ # 可选,查询封装真实类路径示例
实体 — 商品表
cn.shopex.ecshopx.goods.domain.Items- 源文件:
ecshopx-goods/src/main/java/cn/shopex/ecshopx/goods/domain/Items.java - 表名:
items(@MpTable(value = "items", ...))
Mapper — 商品分类
cn.shopex.ecshopx.goods.mapper.ItemsCategoryMapper- 源文件:
ecshopx-goods/src/main/java/cn/shopex/ecshopx/goods/mapper/ItemsCategoryMapper.java - 声明:
extends BaseMapper<ItemsCategory>
实体 — 订单
cn.shopex.ecshopx.orders.domain.NormalOrders- 源文件:
ecshopx-orders/src/main/java/cn/shopex/ecshopx/orders/domain/NormalOrders.java
Mapper — 订单权益
cn.shopex.ecshopx.orders.mapper.RightsDetailMapper- 源文件:
ecshopx-orders/src/main/java/cn/shopex/ecshopx/orders/mapper/RightsDetailMapper.java
Repository — 商品查询封装
cn.shopex.ecshopx.goods.repository.ItemsRepository- 源文件:
ecshopx-goods/src/main/java/cn/shopex/ecshopx/goods/repository/ItemsRepository.java - 注入
ItemsMapper,封装按companyId/itemId等维度的查询
禁止事项
| 禁止 | 说明 |
|---|---|
在 domain 实体中调用 Service 或 Mapper | 保持贫血实体 / 纯数据对象 |
| Controller 直接注入 Mapper | 经 Service 或 Repository 访问 |
| 跨模块引用对方 Bundle 的 Mapper | 通过 Port 暴露查询/命令能力 |
| 在 Mapper 接口写业务分支(如权限判断) | 业务规则属于 Service |
| 手写与 Flyway 不一致的表结构注解 | 结构变更走迁移脚本并同步 @MpTable |
