| name | java-vo |
| description | Provides Java VO (Value Object) generation standards including VO classification, naming conventions, class structure, field specifications, and annotation usage. Invoke when generating VO classes or converting DO to VO. |
Java VO映射规范
本技能提供Java VO(Value Object)的生成规范,包括VO分类、命名规范、类结构、字段规范和注解使用。
VO文件分类
1. 业务DataIdVO
- 用途:仅包含业务主键Id,用于简单的Id传递和验证
- 示例:AdminDepartmentDataIdVO、MemberFeedbackDataIdVO
- 特点:结构简单,通常只有一个Id字段
2. 业务DataSaveVO
- 用途:用于接收前端提交的业务数据,进行数据保存或更新
- 示例:AdminDepartmentDataSaveVO、MemberFeedbackDataSaveVO
- 特点:包含完整的业务字段,支持JSR-380验证注解
3. 业务DataShowVO
- 用途:用于向前端展示业务数据,包含完整的业务信息
- 示例:AdminDepartmentDataShowVO、MemberFeedbackDataShowVO
- 特点:包含所有需要展示的字段,可能关联其他DTO
命名规范
类名规范
- 使用大驼峰命名法
- 格式:业务名称+Data+功能(Id、Save、Show) + VO结尾
- 示例:
- AdminDepartmentDataIdVO
- AdminDepartmentDataSaveVO
- AdminDepartmentDataShowVO
字段名规范
- 使用小驼峰命名法
- 示例:adminDepartmentId、adminDepartmentName、adminDepartmentOrder
类结构规范
标准类结构
package com.weetion.serverModule.业务模块.pojo.VO.业务功能文件夹;
import javax.validation.constraints.*;
import lombok.Data;
@Data
@ToString
public class 业务DataSaveVO {
}
Lombok注解规范
- 优先使用Lombok注解自动生成getter、setter和toString方法
- 详细规范请参考java-common-standards技能
- 常用注解:
- @Data:自动生成getter、setter、toString、equals、hashCode方法
- @Getter:自动生成getter方法
- @Setter:自动生成setter方法
- @ToString:自动生成toString方法
字段规范
基本类型
- 基本数据类型优先使用包装类(如Integer代替int)
- 示例:
private Integer adminDepartmentOrder;
private int adminDepartmentOrder;
集合类型
private List<String> adminDepartmentList;
private List adminDepartmentList;
依赖管理
- 优先使用项目内部的DTO和VO
- 避免循环依赖
- 示例:
private AdminDepartmentDataShowVO superiorDepartment;
private Object superiorDepartment;
注释规范
类注释
- 使用/** */格式
- 包含类的用途、作者和创建日期
- 示例:
字段注释
private String adminDepartmentId;
private String adminDepartmentName;
注释语言
验证注解使用
基本验证注解
- @NotBlank:非空字符串验证
- @NotNull:非空对象验证
- @Min/@Max:数值范围验证
- @Size:长度验证
- @Email:邮箱格式验证
- @Pattern:自定义正则验证
注解组合
@NotBlank(message = "请输入用户名")
@Size(min = 6, max = 20, message = "用户名长度必须在6-20位之间")
private String username;
错误消息
- message属性必须使用中文
- 消息要简洁明了,便于用户理解
- 示例:
@NotBlank(message = "请输入用户名")
@NotBlank(message = "username is required")
最佳实践
- 统一命名:遵循驼峰命名法,保持命名一致性
- 包装类优先:基本数据类型优先使用包装类
- 泛型使用:集合类型必须使用泛型
- 避免循环:避免VO之间的循环依赖
- 注释完整:所有字段必须有中文注释
- 验证注解:合理使用验证注解,提供友好的错误提示
- toString方法:重写toString方法便于调试