当前位置: 首页 > article >正文

(自用)Java学习-5.15(模糊搜索,收藏,购物车)

1. 模糊搜索商品功能
  • 前端实现

    • 通过解析URL参数(如search=联想)获取搜索关键字,发送AJAX GET请求到后端接口/product/searchGoodsMessage

    • 动态渲染搜索结果:若结果非空,循环遍历返回的商品数据,生成商品卡片(包含图片、价格、标题),并绑定收藏和购物车功能按钮;若结果为空,显示“无商品信息”。

    • 使用replace()方法动态替换模板中的占位符(如#{id}#{price})。

  • 后端实现

    • 控制器接收关键字info,调用服务层执行模糊查询。

    • SQL逻辑SELECT * FROM t_product WHERE title LIKE '%#{info}%' AND status=1 ORDER BY priority DESC LIMIT 0,12,限制返回前12条数据。

    • 返回JSON格式的商品列表数据。


2. 添加收藏功能
  • 前端实现

    • 点击“加入收藏”按钮触发addFavoriteUse(pid)函数,弹出确认框后发送AJAX请求到/favorite/addFavoriteUse

    • 成功回调后更新按钮状态(如图标变为“取消收藏”)。

  • 后端实现

    • 控制器从会话中获取用户ID和用户名,调用服务层插入收藏记录。

    • 服务层逻辑

      1. 根据商品ID查询商品详情(Product表)。

      2. 将商品信息(标题、价格、图片)与用户ID一起存入收藏表t_favorites

    • SQL逻辑INSERT INTO t_favorites插入完整收藏记录,返回生成的自增收藏ID(fid)。


3. 添加购物车功能
  • 前端实现

    • 点击“加入购物车”按钮触发addProToCart(id, price),发送POST请求到/cart/addProToCart,参数包含商品ID、价格和数量(默认1)。

    • 根据后端返回状态码弹出成功或失败提示。

  • 后端实现

    • 核心逻辑

      1. 检查当前用户的购物车中是否已存在该商品。

      2. 若存在,更新商品数量(num = num + 1);若不存在,新增购物车记录。

    • SQL逻辑

      • 查询:SELECT * FROM t_cart WHERE pid=#{pid} AND uid=#{uid}

      • 插入:INSERT INTO t_cart记录商品、用户、数量、价格等信息。

      • 更新:UPDATE t_cart SET num=#{num}


4. 商品详情展示
  • 前端实现

    • 从URL参数中提取商品ID(pid),请求接口/product/getProDetail获取详情数据。

    • 动态渲染商品标题、价格、库存,并加载多张商品图片(如1_big.png1.jpg)。

  • 后端实现

    • SQL逻辑SELECT * FROM t_product WHERE id=#{pid},直接返回商品完整信息。


5. 购物车展示
  • 前端实现

    • 请求接口/cart/showCartInfo获取当前用户的购物车列表数据。

    • 动态生成表格,展示商品图片、标题、单价、数量(支持增减操作)、小计和删除按钮。

    • 使用模板替换占位符(如#{cid}#{image})填充数据。

  • 后端实现

    • SQL逻辑:联表查询t_cartt_product,返回视图对象CartVo,包含购物车ID、商品信息、数量、小计等字段。

    • 查询语句

      SELECT c.cid, c.pid, c.uid, c.num, p.price, p.image, p.title 
      FROM t_cart c LEFT JOIN t_product p ON c.pid = p.id 
      WHERE c.uid=#{uid} ORDER BY c.modified_time DESC;


6. 关键技术点
  1. 前后端交互

    • 使用AJAX异步请求,数据格式为JSON,通过RESTful风格接口通信。

  2. 数据库操作

    • MyBatis实现SQL映射,动态拼接查询条件(如模糊搜索LIKE)。

    • 联表查询优化数据展示(如购物车关联商品表)。

  3. 功能扩展性

    • 分页逻辑(LIMIT 0,12)支持后续扩展更多商品加载。

    • 收藏和购物车通过用户会话(HttpSession)隔离不同用户数据。

http://www.lryc.cn/news/2393676.html

相关文章:

  • 替代 WPS 的新思路?快速将 Word 转为图片 PDF
  • 【K8S】K8S基础概念
  • FEMFAT许可分析的数据可视化方法
  • 打印机无法远程打印?可以本地打印,本地网络打印机设置给异地使用
  • 包含Javascript的HTML静态页面调取本机摄像头
  • PCB设计实践(三十一)PCB设计中机械孔的合理设计与应用指南
  • deepseek问答记录:请讲解一下torch.full_like()
  • 【Linux篇章】Linux 进程信号2:解锁系统高效运作的 “隐藏指令”,开启性能飞跃新征程(精讲捕捉信号及OS运行机制)
  • 多功能秒达开源工具箱源码|完全开源的中文工具箱
  • 如何在腾讯云 OpenCloudOS 上安装 Docker 和 Docker Compose
  • 清理skywalking历史索引
  • 用nz-tabel写一个合并表格
  • matlab计算转子系统的固有频率、振型、不平衡响应
  • leetcode hot100刷题日记——29.合并两个有序链表
  • 【机器人】具身导航 VLN 最新论文汇总 | Vision-and-Language Navigation
  • Windows 安装 WSL2 并运行 Ubuntu 22.04 指南
  • AI情感陪伴在医疗领域的核心应用潜力
  • 【计算机网络】第1章:概述—分组延时、丢失和吞吐量
  • Python Day38
  • DeepSeek R1 模型小版本升级,DeepSeek-R1-0528都更新了哪些新特性?
  • 线路板厂家遇到的PCB元件放置的常见问题有哪些?
  • 【C/C++】无限长有序数组中查找特定元素
  • SQL正则表达式总结
  • 力扣经典算法篇-13-接雨水(较难,动态规划,加法转减法优化,双指针法)
  • STM32 -- USB虚拟串口通信
  • uni-app开发特殊社交APP
  • Linux中Shell脚本的常用命令
  • RabbitMQ项目实战
  • 安卓开发用到的设计模式(3)行为型模式
  • 生成模型:从数据学习到创造的 AI 新范式