苍穹外卖day07

一、缓存菜品

1. 问题说明

问题:用户端访问的菜品通过数据库获得,当访问量大时,会造成卡顿

解决思路:缓存到redis

逻辑:每个分类下的菜品缓存一份数据;数据有变更时清理缓存数据

2. 代码开发

(1)缓存菜品:

user.DishController:拿到分类id后判断redis中有无缓存,有直接拿出来返回,没有调用数据库,将数据存到redis中。

将List<DishVO>存成redis的string(序列化器可直接转)

(2)清理缓存:增删改的时候清理,改删(全清),增(清增的)

admin.DishController:根据key清理缓存,全清的时候先获取所有dish_开头的key,再清

二、缓存套餐

1. Spring Cache

是一个框架,实现了基于注解的缓存功能;提供了一层抽象,底层可以切换不同的缓存(EHCache,Caffeine,Redis)

2. Spring Cache入门:

启动类加@EnableCaching

controller层新增类 方法上加注解**@CachePut:**
标题

controller层查询类 方法上加注解**@Cachable:** (通过代理对象实现)

controller层删除类 方法上加注解**@CachaEvict:** (通过代理对象实现)

3. 代码开发

启动类加@EnableCaching

user.SetmealController:查询方法加@CachePut

admin.SetmealController:增删改加@CacheEvict(删改全清)

三、添加购物车

1. 需求分析和设计

POST请求:/user/shoppingCard/add

请求参数json:套餐id或菜品id,口味

返回数据:code

2. 代码开发

ShoppogCartController:@RequestBody

ShoppongCartServiceImpl:判断数据库中是否有该菜品(套餐)的数据,如果有,直接数量加一(拿出list的第0个对象的id);如果没有,添加进数据库(现根据菜品id/套餐id查找相关信息,再添加)

ShoppongCartMapper:根据用户id和菜品id(套餐id)查询,返回list;

根据购物车id将数量+1;

添加购物车

3. 功能测试

查看购物车功能还未开发,可通过小程序测试,数据库表验证

四、查看购物车

复用上方的根据id查询,只传递用户id进去

五、清空购物车

根据用户id删除购物车数据

相关推荐
实在智能RPA7 分钟前
航空Agent落地效果评估指标:2026年企业级智能自动化价值度量体系拆解
java·网络·人工智能·ai·自动化
程序员二叉13 分钟前
【JUC】AQS底层深度拆解|独占/共享模式|队列原理全详解
java·开发语言·面试·juc
地铁潜行者18 分钟前
消息堆积后,为什么一扩容消费者,MySQL 先被打崩了?
java·后端
地铁潜行者22 分钟前
订单状态更新成功了,分账消息却没发出去:聊聊本地消息表的一致性坑
java·后端
亦暖筑序22 分钟前
Java 8老系统SQL Agent实战:AI生成候选SQL,安全引擎拦截后再执行
java·人工智能·sql
CodeStats23 分钟前
《源纹天书》卷一:归元初醒(第1-5章)
java
大囚长27 分钟前
大模型服务端如何命中缓存
java·人工智能·缓存·dubbo
别叫我老干部27 分钟前
一键给整个库造测试数据:外键、约束一个都不能少
后端·mysql
摇滚侠27 分钟前
SpringMVC 入门到实战 拦截器 78-82
java·后端·spring·maven·intellij-idea
椰椰椰耶29 分钟前
[SpringCloud][13]OpenFeign快速上手
后端·spring·spring cloud