苍穹外卖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删除购物车数据

相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
小鱼能吃糖1 天前
缺陷修复总览 · mall电商项目:5类缺陷,1个病根,4个业务域
java·电商
此时不提桶,更待何时1 天前
01-06-A-JVM排查实战详解
java·jvm