# VO 类基础字段规范总结 ## 🎯 核心要求 **所有 VO 类必须包含四个基础字段:** ```java /** * 创建者 */ private Long createBy; /** * 创建时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @ExcelProperty(value = "创建时间") private Date createTime; /** * 更新者 */ private Long updateBy; /** * 更新时间 */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; ``` ## 🔧 规范背景 | 查询方式 | 基础字段处理 | VO 类要求 | 问题 | | ------------------------- | -------------- | -------------- | ------------------ | | **MyBatis-Plus 自动查询** | 不包含继承字段 | 无需基础字段 | 未来可能需要 | | **自定义 SQL 查询** | 明确包含字段 | 必须有对应字段 | 缺失导致运行时错误 | **统一解决方案:所有 VO 类都包含基础字段,确保兼容性!** ## 🚨 强制要求 - [ ] **字段完整性**:createBy、createTime、updateBy、updateTime - [ ] **类型统一**:createBy/updateBy 为 Long,时间字段为 Date - [ ] **注解规范**:时间字段使用`@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")` - [ ] **Excel 支持**:createTime 可选导出,updateTime 通常不导出 ## 🛠️ 快速修复流程 ```bash # 1. 发现MyBatis映射错误 grep "Could not set property" logs/error.log # 2. 编辑VO类,添加缺失字段 # 使用上述标准模板 # 3. 重新构建模块 cd ruoyi-modules/[模块名] mvn clean install -U -Dmaven.test.skip=true # 4. 重新构建主应用 cd ../../ruoyi-admin mvn clean compile -U -Dmaven.test.skip=true # 5. 触发热重启 echo "reload" > src/main/resources/.reloadtrigger ``` ## 📊 实际案例 **修复成功案例**: - ✅ `HqVenueInfoVo` - 场地管理界面正常加载 - ✅ `HqVenueReservationVo` - 场地预约界面正常加载 **预防性案例**: - 💡 `HqSatCategoryVo` - 建议添加基础字段保证一致性 ## 📋 检查清单 **新增 VO 类**: - [ ] 是否包含四个基础字段? - [ ] 字段类型是否正确? - [ ] 时间字段是否有 JSON 格式化注解? **现有 VO 类修复**: - [ ] 检查 MyBatis 映射错误日志 - [ ] 补全缺失的基础字段 - [ ] 重新构建验证修复效果 ## 🎯 规范价值 - **🔄 兼容性**:支持所有查询方式 - **📊 一致性**:统一的 VO 类结构 - **🚀 可维护性**:减少运行时错误 - **📈 可扩展性**:支持未来功能扩展 ## 📚 详细规范 完整规范见:`.cursor/cursorrules-backend.md` → "VO 类基础字段规范(强制性)" --- **⚠️ 记住:宁可多加字段保证兼容性,也不要因为字段缺失导致系统异常!**