在南京蜗牛学苑学习的第四十六天
今日代码复盘:ErpOrderPromotionRuleServiceImpl
今天对订单促销规则Service实现类进行了全面重构。原始代码存在多个问题:首先,在保存方法中使用了未定义的"save"变量作为判断条件;其次,错误地将LambdaQueryWrapper同时用于查询、更新和删除操作,该Wrapper仅支持条件构造,并不具备update()和delete()方法;再次,方法签名为void却试图返回分页查询结果,导致返回类型冲突;最后,Wrapper对象定义在if代码块内部却在外部调用,存在作用域越界问题。
重构时按流程拆解为四个步骤:第一步,将原save方法拆分为saveOrUpdate方法,通过判断id是否为空来决定新增还是更新操作;第二步,独立封装deleteById方法,使用removeById执行删除;第三步,单独创建queryPage方法,重新构建LambdaQueryWrapper并调用selectPage返回分页结果,将查询条件与写操作彻底分离;第四步,将更新操作改用UpdateWrapper或直接调用updateById,确保每种操作使用正确的API。
最终实现单一职责原则,每个方法只处理一种数据库操作,Wrapper按需独立创建,方法签名与实际返回值保持一致,代码可读性和维护性显著提升。用时约3小时19分钟。南京蜗牛学苑 java后端 java开发
