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

苍穹外卖(缓存商品、购物车)

缓存商品、购物车

缓存菜品

实现思路 

代码开发

缓存菜品数据 

清理缓存数据

新增菜品

修改菜品

批量删除菜品

起售、停售菜品

抽取到方法 

缓存套餐 

Spring Cache

入门案例

@EnableCaching 

@CachePut 

@Cacheable 

@CacheEvict

代码开发 

导入Spring Cache和Redis相关maven坐标 

在启动类上加入@EnableCaching注解,开启缓存注解功能

在用户端接口SetmealController的 list 方法上加入@Cacheable注解 

在管理端接口SetmealController的 save、delete、update、startOrStop等方法上加入CacheEvict注解 

添加购物车

接口设计

数据库设计 

代码开发 

创建ShoppingCartController 

创建ShoppingCartServiceImpl实现类 

创建ShoppingCartMapper接口 

创建ShoppingCartMapper.xml 

查看购物车

接口设计 

代码开发 

在ShoppingCartController中创建查看购物车的方法 

在ShoppingCartService接口中声明查看购物车的方法 

在ShoppingCartServiceImpl中实现查看购物车的方法 

功能测试 

清空购物车 

接口设计

代码开发 

在ShoppingCartController中创建清空购物车的方法 

在ShoppingCartService接口中声明清空购物车的方法 

在ShoppingCartServiceImpl中实现清空购物车的方法 

在ShoppingCartMapper接口中创建删除购物车数据的方法 


缓存菜品

实现思路 

每个分类下的菜品保存一份缓存数据

数据库中菜品数据有变更时清理缓存数据 

代码开发

缓存菜品数据 

清理缓存数据

修改管理端接口 DishController 的相关方法,加入清理缓存的逻辑,需要改造的方法:

新增菜品

修改菜品

批量删除菜品

起售、停售菜品

新增菜品

修改菜品

批量删除菜品

起售、停售菜品

抽取到方法 

缓存套餐 

Spring Cache

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。 

入门案例

@EnableCaching 

在启动类上加入@EnableCaching注解,开启缓存注解功能

@CachePut 

@Cacheable 

 

@CacheEvict

代码开发 

导入Spring Cache和Redis相关maven坐标 

初始代码已提供

在启动类上加入@EnableCaching注解,开启缓存注解功能

在用户端接口SetmealController的 list 方法上加入@Cacheable注解 

在管理端接口SetmealController的 save、delete、update、startOrStop等方法上加入CacheEvict注解 

添加购物车

接口设计

数据库设计 

代码开发 

初始工程已提供DTO

创建ShoppingCartController 

创建ShoppingCartServiceImpl实现类 

创建ShoppingCartMapper接口 

创建ShoppingCartMapper.xml 

查看购物车

接口设计 

代码开发 

在ShoppingCartController中创建查看购物车的方法 

在ShoppingCartService接口中声明查看购物车的方法 

在ShoppingCartServiceImpl中实现查看购物车的方法 

功能测试 

清空购物车 

接口设计

代码开发 

在ShoppingCartController中创建清空购物车的方法 

在ShoppingCartService接口中声明清空购物车的方法 

在ShoppingCartServiceImpl中实现清空购物车的方法 

在ShoppingCartMapper接口中创建删除购物车数据的方法 

http://www.xdnf.cn/news/2453.html

相关文章:

  • 基于Qt5的蓝牙打印开发实战:从扫描到小票打印的全流程
  • 关系型数据库PostgreSQL vs MySQL 深度对比:专业术语+白话解析+实战案例
  • Tomcat的安装与配置
  • 高能效计算:破解算力增长与能源约束的科技密码
  • JavaScript 函数与算法性能优化
  • 微软GraphRAG的安装和在RAG中的使用体会
  • Javase 基础入门 —— 06 final + 单例
  • 游戏哪些接口会暴露源IP?_深度解析服务器通信安全隐患
  • Apache Sqoop数据采集问题
  • 极客时光:第二部分——用QLoRA、RunPod和Cursor以超低成本微调DeepSeek-7B打造你的聊天机器人
  • WHAT - 《成为技术领导者》思考题(第二章)
  • 加速用户体验:Amazon CloudFront 实践与优化技巧
  • PDFMathTranslate:让数学公式在PDF翻译中不再痛苦
  • 【Android】dialogX对话框框架
  • 【C++ 类和数据抽象】消息处理示例(2)
  • 《代码整洁之道》第9章 单元测试 - 笔记
  • es数据导出
  • Vue中Axios实战指南:高效网络请求的艺术
  • Excel如何安装使用EPM插件并且汉化?
  • uniapp+vue3表格样式
  • Golang | Builder模式
  • 大模型——Suna集成浏览器操作与数据分析的智能代理
  • Transformer数学推导——Q25 分析视觉-语言模型中区域注意力(Region Attention)的边界框投影公式
  • Ubuntu 22.04.4操作系统初始化详细配置
  • WPF使用SQLite与JSON文本文件结合存储体侧平衡数据的设计与实现
  • 【设计模式】享元模式
  • .aar中申请权限时使用了android:maxSdkVersion导致主App的权限组找不到对应的权限
  • 【机器学习-线性回归-4】线性回归中的最优解:从数学原理到实践应用
  • ESP32开发入门(四):ESP32-s3多串口开发实践
  • 深度整合Perforce P4+Jira+Confluence:游戏开发团队协作工具链搭建指南