|
|
@@ -195,4 +195,23 @@ public class ExampleController {
|
|
|
return R.success(200, "ok", currentUserId);
|
|
|
}
|
|
|
}
|
|
|
-```
|
|
|
+```
|
|
|
+
|
|
|
+## VO/DTO 映射与 ID 类型处理(补充)
|
|
|
+
|
|
|
+为避免把数据库实体类型直接暴露给前端,建议在映射层(Service -> VO/DTO)统一处理 ID 字段类型转换。常见做法:
|
|
|
+
|
|
|
+- 在实体(PO)中使用 `Long`/`Long` 类型表示 ID,在响应 VO 中使用 `String` 类型;映射时显式将 `id` 转为字符串。
|
|
|
+- 推荐示例(简洁版):
|
|
|
+ ```java
|
|
|
+ PhysicalDataResponse r = new PhysicalDataResponse();
|
|
|
+ BeanUtils.copyProperties(record, r);
|
|
|
+ if (record.getId() != null) {
|
|
|
+ r.setId(record.getId().toString());
|
|
|
+ }
|
|
|
+ ```
|
|
|
+- 若团队引入 MapStruct 等映射框架,可在 mapper 配置中添加转换规则(例如 `@Mapping(target = "id", expression = "java(String.valueOf(record.getId()))")`),并在 `05-依赖管理规范.md` 中记录所用版本作为依赖约定。
|
|
|
+
|
|
|
+实现约定:
|
|
|
+- 映射逻辑放在 Service 的转换方法或单独的 Mapper 类中,避免 Controller/Repository 直接操作类型转换。
|
|
|
+- 映射示例应写入代码风格指南,作为团队的示例片段,便于审查与复用。
|