背景说明:
出入库历史mysql单表数据量超5亿,涉及约10张表,急需进行分库分表重构
基于新核云脚手架代码(core-common)进行重构,内含通用分表代码
重构策略:
仅针对仓储层
设计好每个表的分表策略
使用claudeCode生成代码
1. 准备
1. 需要重构的PO代码
2. 分表说明和策略的md文件
分表说明:
- 所有表老id都为数据库自增id
- 所有表新id都为雪花id
- 新id的位数远大于老id
- 新id的起始日期为:配置文件中配置的起始日期
分表策略
- InventoryBatchPO.java
根据id分表,老id每5000000分一张表,新id每10天分一张表 - InventoryRecordPO.java
根据inventory_batch_id分表,每5000000的inventory_batch_id老id分一张表,每10天的inventory_batch_id新id分一张表 - InventoryRecordNormalCheckAccountPO.java
根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表 - InventoryRecordSnCheckAccountPO.java
根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表 - InventoryRecordRelationPO.java
根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表 - InventoryRecordOperateLogPO.java
不分表 - InventoryRecordUnitQuantityPO.java
根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表 - InventoryRecordSnPO.java
根据inventory_record_id分表,每5000000的inventory_record_id老id分一张表,每10天的inventory_record_id新id分一张表 - InventoryBatchDeAuditRelationPO.java
不分表 - InventoryBatchInOutRelationPO.java
根据in_inventory_batch_id分表,老id单独分一张表,每一年的in_inventory_batch_id新id分一张表
放置项目中任意位置
2. 在ClaudeCode中输入提示词
3. ClaudeCode思考并生成代码

4. 人工检查生成的代码
1. dao层代码生成完成
2. mapper层代码生成完成
3. repository层代码生成完成
4. 分表规则代码文件生成完成,但存在问题
-
oldIdThreshold的值是ai自己定义的,并不符合实际情况,且未按要求定义在配置文件中
-
startTime未按要求定义在配置文件中
5. 自动新建分表table代码文件生成完成,但存在问题
- 部分表的获取最大分表id的代码生成错误,下图所示应该是从inventory_batch表中获取最大id值
5. 分析问题
-
oldIdThreshold值的问题,是因为我未在md中定义
-
startTime我在md中写的是“配置文件中配置的起始日期”,但实际未在配置文件中定义,可能是需要我讲yaml中的key给明确掉才能准确生成
-
自动建表代码中未按我的想法去获取分表id的最大值,这块确实也没在md中说明,但比较细节的点了,这类问题可能还是需要进行二次代码生成优化才行
6. 总结
本篇主要想分享一下ClaudeCode对开发效率的提升
-
ClaudeCode具备上下文理解能力,可以在项目范围内进行智能编程。
-
大量减少研发理解上下文的思考时间
-
减少手动编写重复性代码的时间
-
Claude 可以理解复杂的编程需求并自主完成任务(修改本地文件),
-
自主执行批处理命令和脚本(安装本地编译运行环境)
-
自主修改本地代码文件
-
最理想情况,提示的够全面,那开发仅需要git commit








