88e030b7
王彪总
init project
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
# java110-bean 模块说明文档
## 模块概述
`java110-bean` 是 MicroCommunity 项目的数据实体模块,负责管理系统中所有的数据实体对象。该模块采用分层架构设计,将数据对象按照不同的使用场景和职责进行划分,确保数据在不同层次间的安全性和一致性。
## 项目信息
- **项目类型**: Maven 项目
- **ArtifactId**: `java110-bean`
- **父项目**: `MicroCommunity` (com.java110:1.0-SNAPSHOT)
- **打包方式**: jar
- **主要依赖**:
- `fastjson` - 阿里巴巴的JSON处理库
## 包结构说明
### 1. DTO (Data Transfer Object) 包
- **位置**: `com.java110.dto`
- **子包数量**: 100个
- **主要用途**: 数据传输对象,主要用于查询操作
- **特点**:
- 字段不需要与数据库字段一一对应
- 支持复杂查询结果的封装
- 继承自基础类 `Dto`(实现 `Serializable` 接口)
**主要子包示例**:
- `accessControl` - 门禁控制相关DTO
- `account` - 账户管理相关DTO
- `activities` - 活动管理相关DTO
- `advert` - 广告管理相关DTO
- `fee` - 费用管理相关DTO
- `user` - 用户管理相关DTO
- ...等100个业务领域子包
### 2. PO (Persistent Object) 包
- **位置**: `com.java110.po`
- **子包数量**: 86个
- **主要用途**: 持久化对象,主要用于数据库增删改操作
- **特点**:
- 字段与数据库表字段一一对应
- 直接映射数据库表结构
- 用于ORM框架操作
**主要子包示例**:
- `accessControl` - 门禁控制相关PO
- `account` - 账户管理相关PO
- `activities` - 活动管理相关PO
- `fee` - 费用管理相关PO
- `user` - 用户管理相关PO
- ...等86个业务领域子包
### 3. VO (View Object) 包
- **位置**: `com.java110.vo`
- **子包数量**: 1个(api子包) + 7个核心类
- **主要用途**: 视图对象,主要用于前端数据返回
- **特点**:
- 控制数据安全性,选择性返回前端所需字段
- 防止敏感信息泄露(如用户密码)
- 统一的接口输出协议
**核心类**:
- `ResultVo` - 统一的接口返回结果封装类
- `Vo` - VO基础类
- `FeeDetailResultVo` - 费用明细返回VO
- `FloorVo` - 楼层信息VO
- `MachineTaskVo` - 设备任务VO
- `MorePageVo` - 分页VO
- `api`子包 - API接口专用VO
## 包关系与数据流转
### 数据流转流程
1. **数据库操作层** ↔ **PO对象**:直接与数据库交互
2. **业务逻辑层** ↔ **DTO对象**:处理复杂查询和业务逻辑
3. **接口层** ↔ **VO对象**:返回给前端的安全数据
### 职责分离
- **PO**: 专注于数据持久化,与数据库表结构强关联
- **DTO**: 专注于业务数据传输,支持复杂查询结果封装
- **VO**: 专注于前端展示,确保数据安全性
## 核心类说明
### ResultVo 类
作为统一的接口返回封装类,提供:
- 标准化的响应码和消息定义
- 分页数据支持
- 数据对象封装
- 便捷的静态方法创建响应实体
**常用静态方法**:
```java
ResultVo.success(); // 成功响应
ResultVo.error("错误信息"); // 错误响应
ResultVo.createResponseEntity(data); // 创建响应实体
```
### Dto 基础类
所有DTO对象的基类,实现 `Serializable` 接口,支持序列化。
## 使用示例
### 查询场景
```java
// 使用DTO进行复杂查询
UserDto userDto = userService.queryUser(userQueryDto);
// 转换为VO返回前端
UserVo userVo = convertToVo(userDto);
return ResultVo.createResponseEntity(userVo);
```
### 数据操作场景
```java
// 使用PO进行数据库操作
UserPo userPo = new UserPo();
userPo.setUserName("test");
userMapper.insert(userPo);
```
## 注意事项
1. **数据安全**: VO对象必须过滤敏感信息,确保不返回密码等敏感字段
2. **职责明确**: 各包对象应严格遵循其设计用途,避免混用
3. **包依赖**: 建议遵循 PO → DTO → VO 的单向依赖关系
4. **序列化**: 所有DTO对象都支持序列化,便于网络传输
## 版本信息
- **创建时间**: 2020-12-13
- **维护者**: java110 team
- **许可证**: Apache License 2.0
---
|