模块与包结构
模块名 = 表前缀;命名规范一览;参照实现在哪。
包结构
cn.minimao
├── app/<module>/{controller,service,dto,vo,convert}
├── domain
│ ├── handler/<module> + handler/<module>/cmd
│ ├── enums / enums/base
│ └── exception
├── infra/<module>/{model,mapper,repository,query}
├── data # BaseRepository + 查询条件框架
├── plugin # 扩展点(插件链)
├── common # 上下文、线程、工具、异常
└── config # 响应壳、MyBatis、Sa-Token、JSON 装配
命名规范
| 层 | 后缀 | 基类 / 契约 | 位置 |
|---|---|---|---|
| infra | XxxDO | 必须 extends BaseDO | infra/<module>/model |
| infra | XxxMapper | BaseMapper<XxxDO> + @Mapper | infra/<module>/mapper |
| infra | XxxRepository | extends BaseRepository<XxxMapper, XxxDO> | infra/<module>/repository |
| infra | XxxPageQuery | 自定义 SQL 的分页载体,extends PageCarrierQuery | infra/<module>/query |
| domain | XxxHandler | extends MiniMaoAbstractHandler | domain/handler/<module> |
| domain | XxxCmd | 纯 @Data | domain/handler/<module>/cmd |
| app | XxxService | @Service | app/<module>/service |
| app | XxxDTO / XxxVO | 入参 / 出参 | app/<module>/{dto,vo} |
| app | XxxConvert | @Mapper(componentModel = "spring") | app/<module>/convert |
- DO / VO / DTO / Cmd 统一
@Data;继承基类的要加@EqualsAndHashCode(callSuper = true)。 @TableName("表名")必填,模块名即表前缀。infra/<module>/model只放表映射实体,查询载体放query——混在一起会让读者必须逐个看注解才能分辨。
参照实现
想知道"标准答案长什么样",直接看这三个包:app/users/**、domain/handler/users/**、infra/users/**。
提示:新增模块不要手抄目录,用骨架生成器:省下的时间用来写业务。
最后更新 2026-10-09编辑此页 →