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

相关推荐
devlei1 小时前
从源码泄露看AI Agent未来:深度对比Claude Code原生实现与OpenClaw开源方案
android·前端·后端
pshdhx_albert2 小时前
AI agent实现打字机效果
java·http·ai编程
沉鱼.442 小时前
第十二届题目
java·前端·算法
努力的小郑3 小时前
Canal 不难,难的是用好:从接入到治理
后端·mysql·性能优化
赫瑞3 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
Victor3563 小时前
MongoDB(87)如何使用GridFS?
后端
Victor3564 小时前
MongoDB(88)如何进行数据迁移?
后端
小红的布丁4 小时前
单线程 Redis 的高性能之道
redis·后端
GetcharZp4 小时前
Go 语言只能写后端?这款 2D 游戏引擎刷新你的认知!
后端
周末也要写八哥4 小时前
多进程和多线程的特点和区别
java·开发语言·jvm