92 lines
3.7 KiB
Markdown
92 lines
3.7 KiB
Markdown
# 目录结构说明
|
||
|
||
一个标准的MVC三层目录结构示例:
|
||
|
||
```text
|
||
com/example/project/
|
||
│
|
||
├── controller/ # 控制器层(接收请求)
|
||
│ ├── UserController.java
|
||
│ └── ...
|
||
│
|
||
├── service/ # 业务逻辑层
|
||
│ ├── UserService.java # 接口
|
||
│ ├── impl/ # 实现类
|
||
│ │ └── UserServiceImpl.java
|
||
│ └── ...
|
||
│
|
||
├── mapper/ # 数据访问层(MyBatis Mapper)
|
||
│ ├── ProductMapper.java
|
||
│ └── ...
|
||
│
|
||
├── domain/ # 领域层(聚合所有数据对象)
|
||
│ ├── entity/ # 实体类(与数据库表对应)
|
||
│ │ ├── Product.java
|
||
│ │ └── ...
|
||
│ │
|
||
│ ├── dto/ # 数据传输对象(输入参数)
|
||
│ │ ├── ProductQueryDTO.java
|
||
│ │ └── ...
|
||
│ │
|
||
│ └── vo/ # 视图对象(输出结果)
|
||
│ ├── UserVO.java
|
||
│ ├── ProductVO.java
|
||
│ ├── PageVO.java # 分页结果封装
|
||
│ └── ...
|
||
│
|
||
├── config/ # 配置类
|
||
│ ├── DataSourceConfig.java
|
||
│ └── ...
|
||
│
|
||
├── utils/ # 工具类
|
||
│ ├── DateUtil.java
|
||
│ └── ...
|
||
│
|
||
├── constants/ # 常量类
|
||
│ ├── StatusCode.java
|
||
│ └── ...
|
||
│
|
||
├── enums/ # 枚举类
|
||
│ ├── ResultCodeEnum.java
|
||
│ └── ...
|
||
│
|
||
└── Application.java # 启动类
|
||
```
|
||
|
||
## MVC各层职责说明
|
||
|
||
| 包名 | 职责 | 关键注解 | 典型类名示例 |
|
||
|------|------|----------|-------------|
|
||
| **controller** | 接收HTTP请求,参数校验,调用Service层,返回VO给前端 | `@RestController`<br>`@RequestMapping`<br>`@Validated` | `UserController.java` |
|
||
| **service** | 业务逻辑处理,事务管理,调用Mapper层,组装数据 | `@Service`<br>`@Transactional` | `UserService.java`(接口)<br>`UserServiceImpl.java`(实现) |
|
||
| **mapper** | 数据库CRUD操作,SQL映射,与数据库交互 | `@Mapper`<br>`@Repository`| `UserMapper.java` |
|
||
| **domain/entity** | 数据库表映射实体,与表结构一一对应 | `@TableName`(MyBatis-Plus)| `User.java` |
|
||
| **domain/dto** | 接口输入参数对象,用于接收前端请求数据,可添加校验注解 | `@Data`<br>`@NotBlank`/`@NotNull`等校验注解 | `ProductQueryDTO.java` |
|
||
| **domain/vo** | 接口输出结果对象,用于返回前端展示数据,过滤敏感字段 | `@Data`<br>无业务注解 |`ProductVO.java` |
|
||
| **config** | 配置类 | `@Configuration`<br>`@Bean` | `DataSourceConfig.java`|
|
||
| **utils** | 通用工具类,提供各种辅助方法 | 无注解 | `DateUtil.java` |
|
||
| **constants** | 常量定义,统一管理常量值 | 无注解 | `Constants.java` |
|
||
| **enums** | 枚举类型定义,管理固定状态码、类型等 | `@Enum` |`ResultCodeEnum.java` |
|
||
| **Application** | 项目启动类,Spring Boot应用入口 | `@SpringBootApplication`<br>`@MapperScan` | `Application.java` |
|
||
|
||
## 各层调用关系图
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
subgraph 调用链
|
||
Controller -->|依赖调用| Service
|
||
Service -->|依赖调用| Mapper
|
||
Mapper -->|依赖调用| Database
|
||
end
|
||
|
||
subgraph 数据对象
|
||
DTO[DTO<br/>输入参数]
|
||
VO[VO<br/>输出结果]
|
||
Entity[Entity<br/>实体对象]
|
||
end
|
||
|
||
Controller -.->|接收| DTO
|
||
Controller -.->|返回| VO
|
||
Service -.->|转换| Entity
|
||
Mapper -.->|操作| Entity
|
||
``` |