【电商项目】商品服务模块的问题解决与代码逻辑思考

一、启动报错(SQL问题)

有了之前的经验,现在我一眼就能锁定是哪里的问题了。由于报错繁长,所以就不粘贴报错信息了,而且本身发现是SQL问题之后,我就去看日志了。这里我让Claude梳理了整个查错思路,这样看也更清晰一些。

二、新增需求书写逻辑

大家先看一遍这段代码:

写这段代码的时候是这样介绍的:当我们的整个项目基本完工后,上头某天要求我们新增一个这个功能,让我们补充书写。

然后就在控制器类里写了如上的代码。当时观看过程中我是有些不理解的,为什么不用 构造 QueryWrapper 的方法写呢,因为之前一直用的那个方法,有点习惯了。当时也是太晚了脑子不转了,就睡了,第二天重新看代码的时候我想到了,这么写的原因:

项目已经写好了通用方法findProductType(ProductType productType),这个 Service 方法支持以实体类封装查询条件做条件检索。

我们虽可以直接在 Controller 中创建 QueryWrapper拼接条件实现查询,但开发规范约定:复杂查询逻辑禁止写在 Controller 层,统一下沉至 Service 层维护。

按照规范,若要想用QueryWrapper实现,就需要改动 Service 接口、新增 Service 抽象方法、改动 Mapper,这样多处改动不仅开发工作量大,还容易产生代码疏漏与 BUG。

最优方案 :直接复用已有的findProductType通用方法。Controller 仅负责接收前端参数、封装实体查询条件,直接调用成熟的 Service 方法,仅改动 Controller 单个文件,改动量最小,稳定性更高。

然后顺便捋一下这个代码逻辑:

前端 GET 请求传参父 ID→塞进实体作为查询条件→通用方法根据实体有值字段自动条件查询。

总结

总体比较顺利,晚安

相关推荐
Gauss松鼠会3 分钟前
GaussDB 整体架构解析
运维·服务器·网络·数据库·sql·架构·gaussdb
西瓜拿铁好喝9 分钟前
开源和闭源 AI 办公工具,分别适合谁
java·前端·数据库
学长毕设11 分钟前
基于SpringBoot的校园礼服租赁系统的设计与实现
java·spring boot·后端
明天也要努力学习17 分钟前
深入理解 JVM 垃圾回收(GC)
java·jvm
Gauss松鼠会23 分钟前
GaussDB 中 gsql 与 DBeaver(JDBC)客户端工具查询时间不一致:原因、排查与处理
运维·服务器·数据库·sql·gaussdb·经验总结
golang学习记24 分钟前
IDEA 断点调试技巧:拖拽
java·ide·intellij-idea
Sayai26 分钟前
Flink 日志解析任务性能优化实战:正则/Grok 预编译、Guava 缓存权重陷阱与 ES 写入隔离
java·大数据·性能优化·flink·实时计算
计算机毕设定制辅导-无忧学长28 分钟前
《基于物品协同过滤的闲置书换购微信小程序设计开发》
java·vue.js·spring boot·微信小程序·uniapp·闲置书换购微信小程序·物品协同过滤算法
Best_Liu~29 分钟前
SpringBoot全局日期格式化
java·spring boot·后端
渣渣盟30 分钟前
Flink SQL 流批一体:从 SQL 到执行计划,优化器如何工作?
大数据·sql·flink