datai/docs/archive/retros/20260118-entity-mapper-create-retro.md

8.7 KiB
Raw Blame History

复盘报告 - 基础实体类和Mapper创建

复盘时间

2026-01-19

复盘人

SSOT 架构师

目标回顾

原始目标

为9张数据库表创建对应的Java实体类、Mapper接口和XML映射文件使用MyBatis Plus框架提供基础的CRUD操作为后续功能开发提供数据访问基础。

实际成果

成功创建了9张数据库表对应的Java实体类、Mapper接口和XML映射文件使用MyBatis Plus框架提供了基础的CRUD操作为后续功能开发提供了数据访问基础。

目标对比

目标 完成情况 说明
创建9个实体类 完成 使用 MyBatis Plus 注解创建实体类,使用 Lombok 简化代码,使用 @TableField(select = false) 注解保护敏感字段
创建9个 Mapper 接口 完成 使用 BaseMapper 提供基础的 CRUD 方法,使用 @Mapper 注解标记 Mapper 接口
创建9个 Mapper XML 文件 完成 使用 MyBatis Plus 的 XML 映射语法,配置 namespace 和 resultType 正确
更新配置文件 完成 配置 MyBatis Plus 扫描路径和分页插件
创建单元测试 完成 使用 Spring Boot Test 框架,测试所有实体类和 Mapper 接口
更新文档 完成 更新 index.md、CHANGELOG.md创建 ADR 文档、Prompt 文档、会话记录、变更记录、复盘报告

成功因素

  1. 清晰的需求定义: REQ-010-2 需求文档详细定义了实体类和 Mapper 创建的需求,包括功能需求、非功能需求、验收标准
  2. 合理的架构决策: ADR 文档详细分析了多种技术方案,选择了最适合项目的技术方案
  3. 详细的实现提示词: Prompt 文档提供了详细的实现指导包括实体类创建、Mapper 接口创建、Mapper XML 文件创建、配置文件更新、单元测试创建
  4. 完善的开发流程: 按照 SSOT 方法论,完成了需求定义、架构决策、提示词资产化、执行会话、变更记录、闭环复盘 6 个阶段
  5. 代码质量高: 代码符合项目编码规范,有清晰的注释,结构清晰,易于扩展和维护

问题与挑战

遇到的问题

面临的挑战

  1. 实体类字段映射: 需要正确映射数据库字段和 Java 字段,包括字段类型、字段名称、字段注解
  2. 敏感字段保护: 需要保护敏感字段client_secret、password、security_token避免泄露
  3. 大字段处理: 需要正确处理 TEXT 类型大字段,使用 String 类型存储
  4. Mapper XML 配置: 需要正确配置 namespace 和 resultType确保 Mapper 接口能够正确映射

解决方案

  1. 实体类字段映射: 使用 MyBatis Plus 注解(@TableName、@TableId、@TableField简化实体类配置
  2. 敏感字段保护: 使用 @TableField(select = false) 注解保护敏感字段,避免泄露
  3. 大字段处理: 使用 String 类型处理 TEXT 类型大字段,简单可靠
  4. Mapper XML 配置: 配置 namespace 为 Mapper 接口的全限定名,配置 resultType 为实体类的全限定名

经验教训

成功经验

  1. 使用 MyBatis Plus 注解简化实体类配置: MyBatis Plus 注解(@TableName、@TableId、@TableField可以简化实体类配置提高开发效率
  2. 使用 Lombok 简化实体类代码: Lombok 可以简化实体类代码,减少样板代码,提高代码可读性
  3. 使用 @TableField(select = false) 注解保护敏感字段: @TableField(select = false) 注解可以保护敏感字段,避免泄露
  4. 使用 BaseMapper 提供基础的 CRUD 方法: BaseMapper 提供了基础的 CRUD 方法,简化了 Mapper 接口的开发
  5. 使用 MyBatis Plus 的 XML 映射语法: MyBatis Plus 的 XML 映射语法简单易用,配置 namespace 和 resultType 正确

失败教训

避免的坑

  1. 不要使用 XML 映射文件创建实体类: XML 映射文件可以配置复杂的字段映射,但 XML 映射文件配置复杂维护成本高XML 映射文件不如注解直观,不如 MyBatis Plus 注解简单易用
  2. 不要使用 JPA 注解创建实体类: JPA 是标准的 ORM 框架,易于学习,但 JPA 的性能不如 MyBatis PlusJPA 不如 MyBatis Plus 灵活,不如 MyBatis Plus 注解简单易用
  3. 不要使用 Gson 处理 JSON 字段: Gson 是 Google 开发的 JSON 处理库,性能良好,但 Gson 的功能不如 Jackson 丰富Gson 的注解不如 Jackson 灵活,不如 Jackson 流行

改进建议

流程改进

  1. 加强代码审查: 建议在代码提交前进行代码审查,确保代码质量
  2. 加强单元测试: 建议增加单元测试覆盖率,确保代码质量
  3. 加强集成测试: 建议增加集成测试,确保功能正常

技术改进

  1. 使用 MyBatis Plus 的代码生成器: 建议使用 MyBatis Plus 的代码生成器自动生成实体类、Mapper 接口、Mapper XML 文件,提高开发效率
  2. 使用 MyBatis Plus 的分页插件: 建议使用 MyBatis Plus 的分页插件,支持分页查询
  3. 使用 MyBatis Plus 的条件构造器: 建议使用 MyBatis Plus 的条件构造器,简化查询条件构造

文档改进

  1. 增加实体类使用文档: 建议增加实体类使用文档,说明如何使用实体类
  2. 增加 Mapper 接口使用文档: 建议增加 Mapper 接口使用文档,说明如何使用 Mapper 接口
  3. 增加单元测试文档: 建议增加单元测试文档,说明如何编写单元测试

提取模式

有效的 Prompt 技巧

  1. 引用真源: Prompt 开头必须引用 docs/requirements/docs/design/ 的文件链接,确保 Prompt 基于真实需求
  2. 定义输出格式: Prompt 必须定义输出格式,如必须包含单元测试,必须符合某设计模式
  3. 提供代码示例: Prompt 必须提供代码示例,帮助开发者理解如何实现功能
  4. 提供验收标准: Prompt 必须提供验收标准,帮助开发者验证功能是否正确实现

避免的坑

  1. 不要在 Prompt 中使用模糊的语言: Prompt 必须使用清晰的语言,避免使用模糊的语言,如"可能"、"也许"、"大概"
  2. 不要在 Prompt 中遗漏关键信息: Prompt 必须包含所有关键信息,如功能需求、非功能需求、验收标准
  3. 不要在 Prompt 中提供过多的信息: Prompt 必须提供必要的信息,避免提供过多的信息,导致 Prompt 过于冗长

模板迭代

模板适用性评估

本次使用的模板需求文档、ADR 文档、Prompt 文档、会话记录、变更记录、复盘报告)完全适用于基础实体类和 Mapper 创建功能,无需修改。

模板改进建议

后续行动计划

短期计划1-2周

  1. 进行集成测试,确保功能正常
  2. 进行性能测试,确保性能满足要求
  3. 编写用户文档,说明如何使用实体类和 Mapper 接口

中期计划1-2个月

  1. 监控实体类序列化和反序列化性能
  2. 监控 Mapper 接口查询性能
  3. 定期优化实体类和 Mapper 接口

长期计划3-6个月

  1. 使用 MyBatis Plus 的代码生成器自动生成实体类、Mapper 接口、Mapper XML 文件
  2. 使用 MyBatis Plus 的分页插件,支持分页查询
  3. 使用 MyBatis Plus 的条件构造器,简化查询条件构造

总结

本次基础实体类和 Mapper 创建功能开发顺利完成,按照 SSOT 方法论,完成了需求定义、架构决策、提示词资产化、执行会话、变更记录、闭环复盘 6 个阶段。

成功创建了9张数据库表对应的Java实体类、Mapper接口和XML映射文件使用MyBatis Plus框架提供了基础的CRUD操作为后续功能开发提供了数据访问基础。

本次开发过程中,没有遇到问题,代码质量高,符合项目编码规范,有清晰的注释,结构清晰,易于扩展和维护。

本次开发过程中,总结了一些成功的经验和避免的坑,为后续开发提供了参考。

本次开发过程中,提出了一些改进建议,包括流程改进、技术改进、文档改进,为后续开发提供了方向。

相关链接