2.9 KiB
2.9 KiB
Map/注解SQL 到 DTO/Lambda 迁移映射说明(CMLR-110)
1. 方法迁移映射(旧 -> 新)
| 旧位置/方法 | 新位置/方法 | 说明 |
|---|---|---|
UserDao.queryWithPhoneNumber 注解 SQL |
UserDao.queryWithPhoneNumber default + Wrappers.lambdaQuery |
用户手机号查询改为 Lambda,补齐 UserModel.mobile 映射。 |
UserDao.findCreatedPk |
PkRecordDao.findCreatedPk |
跨表 pk_record 查询归位到 PkRecordDao。 |
UserDao.getMyGuestPkList |
PkRecordDao.getMyGuestPkList |
跨表 pk_record 查询归位到 PkRecordDao。 |
UserDao.signIn |
SignInRecordDao.signIn |
新增 SignInRecord 实体与 Dao 承接签到写入。 |
UserDao.checkSignStatus |
SignInRecordDao.checkSignStatus |
当日签到状态查询迁移到 sign_in_records 专属 Dao。 |
PkRecordDao.fetchDetailPkDataWithId 跨表 SQL |
PkRecordDetailDao.queryDetail |
明细查询归位到 pk_record_detail 对应 Dao。 |
PkInfoDao.checkIfUnfinishedPKExistsWithAnchor 跨表 SQL |
PkRecordDao.checkIfUnfinishedPKExistsWithAnchor |
未完成记录检查归位到 PkRecordDao。 |
PkInfoDao.selectPkInfoByCondition 动态注解 SQL |
PkInfoDao.selectPkInfoByCondition default + LambdaQueryWrapper + last |
条件拼装迁移为 Lambda,排序 SQL 通过 last 保序。 |
PkInfoDao.queryCanUseData/queryAllPkData/... 注解 SQL |
对应 PkInfoDao default Lambda 方法 |
静态 SQL 批量迁移到 Wrapper。 |
PkRecordDao.pkListForToday/fetchDataFromTodayWithUserId/... 注解 SQL |
对应 PkRecordDao default Lambda 方法 |
PK 记录相关静态 SQL 迁移。 |
2. 风险点
Lombok注解处理在当前仓库编译链路中未生效,导致mvn clean test无法执行,自动化证据受限。system_user/system_users表名历史不一致,需在目标环境确认最终物理表映射。pk_time在PkRecord为字符串字段,迁移后时间比较依赖字符串时间戳格式稳定。SignInRecordDao使用Asia/Shanghai日期写入,需与数据库时区策略一致。
3. 回滚策略
- 按 feature commit 粒度回滚(
git revert):优先回滚3246146(跨表归位)、a78b06f(动态查询)、8692b10(静态SQL迁移)、32a6d71(User查询迁移)。 - 若线上仅出现单链路问题,优先局部回滚对应 mapper 文件(例如仅回滚
PkInfoDao.selectPkInfoByCondition)。 - 保留
ControllerMapToDtoContractTests与 DAO/E2E catalog 测试目录,回滚后再次执行以确认契约恢复。
4. 兼容性结论
- Controller 层 18 个历史
@RequestBody Map端点已替换为 DTO,URL 与返回类型保持不变。 - DAO 层迁移采用 default 方法 + MyBatis-Plus Wrapper,保持方法签名与调用入口稳定。
- 受限项:当前环境无法完成
mvn clean test,因此“行为完全等价”仍需在修复编译基线后做最终运行态确认。