Skip to content

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

相关章节 ​