refactor(model): 重构模型类包结构并优化序列化处理
重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。 - 将模型类按功能模块划分到ds子包中 - 为VO类添加序列化支持 - 移除冗余的serialVersionUID字段 - 修复UITools空值处理问题 - 更新项目版本号
This commit is contained in:
58
.trae/rules/vo_rules.md
Normal file
58
.trae/rules/vo_rules.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# VO类规则
|
||||
|
||||
## 1. 目录结构
|
||||
- VO类统一放置在 `common/src/main/java/com/ecep/contract/vo/` 目录下
|
||||
- 按业务领域组织,不使用子目录
|
||||
|
||||
## 2. 命名规范
|
||||
- 类名:使用驼峰命名法,首字母大写,以Vo结尾,如 `ContractVo.java`、`CompanyVo.java`
|
||||
|
||||
## 3. 继承与接口实现
|
||||
- **必须实现** `java.io.Serializable` 接口,用于对象序列化
|
||||
- **通常实现** `IdentityEntity` 接口,提供主键ID的getter/setter方法
|
||||
- **可能实现** `NamedEntity` 接口,提供name属性的getter/setter方法(适用于有名称的VO)
|
||||
- **可能实现**特定领域接口,如:
|
||||
- `CompanyBasedVo`:提供companyId属性的getter/setter方法
|
||||
- `ProjectBasedVo`:提供project属性的getter/setter方法
|
||||
- `ContractBasedVo`:提供contractId属性的getter/setter方法
|
||||
- 其他类似的基于特定实体的接口
|
||||
|
||||
## 4. 注解规范
|
||||
- 通常使用Lombok的 `@Data` 注解,自动生成getter、setter、equals、hashCode和toString方法
|
||||
|
||||
## 5. 序列化规范
|
||||
- **必须包含** `private static final long serialVersionUID = 1L;` 字段,用于版本控制
|
||||
- 所有字段类型必须是可序列化的
|
||||
|
||||
## 6. 字段规范
|
||||
- 字段类型:
|
||||
- 整数类型:可使用 `Integer` 包装类型或 `int` 原始类型
|
||||
- 布尔类型:可使用 `Boolean` 包装类型或 `boolean` 原始类型
|
||||
- 时间类型:使用 `java.time.LocalDate`(日期)或 `java.time.LocalDateTime`(日期时间)
|
||||
- 字符串类型:使用 `String`
|
||||
- 浮点数类型:使用 `double` 或 `Double`
|
||||
- 关联关系:
|
||||
- 通常只包含关联实体的ID字段,如 `companyId`、`project`、`contractId` 等
|
||||
- 不包含实体对象的直接引用
|
||||
- 默认值:
|
||||
- 布尔类型字段通常有默认值(如 `false`)
|
||||
- 其他类型根据业务需求设置默认值
|
||||
|
||||
## 7. 注释规范
|
||||
- 类注释:使用JavaDoc格式,描述VO类的用途,如 `/** 项目报价视图对象 */`
|
||||
- 字段注释:使用JavaDoc格式,描述字段的含义、用途或业务规则
|
||||
- 关键字段(如外键、状态字段)应提供清晰的注释说明
|
||||
|
||||
## 8. 最佳实践
|
||||
- VO类应保持简洁,只包含数据和基本的数据访问方法
|
||||
- 避免在VO类中包含复杂的业务逻辑
|
||||
- 字段命名应与对应的实体类保持一致或有明确的映射关系
|
||||
- 确保所有字段都是可序列化的
|
||||
- 对于有默认值的字段,应在声明时初始化
|
||||
|
||||
## 9. 与实体类的区别
|
||||
- **序列化**:VO类必须实现 `Serializable` 接口并包含 `serialVersionUID` 字段,而实体类不包含
|
||||
- **用途**:VO类主要用于数据传输和展示,实体类主要用于持久化
|
||||
- **关联关系**:VO类通常只包含关联实体的ID,实体类包含实体对象的引用
|
||||
- **注解**:VO类主要使用Lombok注解,实体类使用JPA注解和Lombok注解
|
||||
- **方法**:VO类通常只有getter/setter方法,实体类可能包含更多业务相关方法
|
||||
Reference in New Issue
Block a user