更新 knowledge.md
This commit is contained in:
@@ -302,9 +302,10 @@ meeting_with_room_dto无uuid,为待创建DTO。meeting_base_dto和meeting_room
|
||||
|
||||
#### **2.7 视图对象 (VO)**
|
||||
- **定义与用途:** VO基于BaseDTO(或指定的其他DTO)派生,通过外键关系关联多个BaseDTO的数据结构。用于视图层与前端数据传输,作为HTTP API返回值或读方案返回值。不能作为接口参数或RPC返回值。
|
||||
- **关键配置:** 名称(以Vo结尾,全局唯一)、根Entity、派生源、字段列表。字段分三种:a.继承DTO字段(基础类型/EO/Enum保持类型不变,DTO类型转为对应VO类型);b.扩展字段(正向替换和反向注入,类型为VO或List<VO>);c.自定义字段(基本类型或VO类型)。可裁剪无用字段,可通过外键关系扩展其他BaseDto。无法扩展时可增加自定义字段。
|
||||
- **关键配置:** 名称(以Vo结尾,全局唯一)、根Entity、所属模块、派生源、字段列表。字段分三种:a.继承DTO字段(基础类型/EO/Enum保持类型不变,DTO类型转为对应VO类型);b.扩展字段(正向替换和反向注入,类型为VO或List<VO>);c.自定义字段(基本类型或VO类型)。可裁剪无用字段,可通过外键关系扩展其他BaseDto。无法扩展时可增加自定义字段。
|
||||
- **继承字段类型转换:** VO只与派生源VO有转换关系。当VO派生自某DTO,且继承了派生源DTO中的DTO类型字段(假设DTO-A),则VO中对应字段类型必须为VO(假设VO-A),且**VO-A必须派生自DTO-A**,以维持转换关系。
|
||||
- **与DTO的区别:** DTO用于服务层传输,通常作RPC返回值,与数据模型更近,复用性强;VO用于视图层传输,通常作API返回值,与UI展示更近,可裁剪冗余字段,复用性弱。
|
||||
- **VO所属模块:** VO无法被跨模块引用,模块A内部的API只能使用模块A内部的VO。VO可以与其派生源DTO不在同一模块,如:meeting模块的API需要返回meeting_room_dto派生出的VO,则需要在meeting模块创建派生自meeting_room_dto的VO,以便被meeting模块的API使用,注意创建VO时传入的moduleName字段,用于指定VO所在的模块。
|
||||
- **创建方式:** VO通常基于某个BaseDTO及外键关系派生,也可直接创建与DTO无关的全自定义字段VO(尽量少用,仅用于特殊页面组装无关数据的场景)。
|
||||
- **根VO和子VO:** VO分两种:1.根VO:最外层VO结构,需通过TOCO创建,有uuid唯一标识,可被其他根VO或子VO引用;2.子VO:根VO内部嵌套VO,通过外键关系关联BaseDTO后自动创建,仅附属于一个根VO,无uuid。需描述VO字段和扩展关系,通过**创建根VO**使TOCO**自动创建**子VO或引用其他根VO。
|
||||
- **字段扩展方式:** 同DTO字段扩展方式,通过任意**一个**派生源BaseDTO,经外键扩展成复杂嵌套VO。满足条件即可扩展:正向替换(当前实体有指向其他实体的外键字段);反向注入(其他实体有指向当前实体的外键字段)。
|
||||
@@ -382,6 +383,7 @@ meeting_with_room_dto无uuid,为待创建DTO。meeting_base_dto和meeting_room
|
||||
"name": "metting_with_room_vo",
|
||||
"description": "会议详情,包含会议室信息,以及会议室禁用列表",
|
||||
"rootVo": "metting_with_room_vo",
|
||||
"moduleName": "meeting",
|
||||
"fromEntity": "meeting",
|
||||
"fromDto": "meeting_detail_dto",
|
||||
"fromDtoUuid": "cd55c96b-aa67-bfb2-7614-70b503a8f8bf",
|
||||
|
||||
Reference in New Issue
Block a user