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

相关推荐
小怪吴吴11 小时前
idea 开发Android
android·java·intellij-idea
嘻嘻哈哈樱桃11 小时前
牛客经典101题题解集--动态规划
java·数据结构·python·算法·职场和发展·动态规划
一次旅行12 小时前
IDEA安装CC GUI新手指南
java·ide·intellij-idea
超梦dasgg12 小时前
Spring AI 智能航空助手项目实战
java·人工智能·后端·spring·ai编程
lifewange12 小时前
如何设计一个 RESTful API
后端·http·restful
a8a30212 小时前
Laravel9.x新特性全解析
运维·spring boot·nginx
安德鲁202212 小时前
Spring Boot + Undertow 全栈架构深度剖析时序图
后端
码事漫谈12 小时前
AI 正在重塑职场:有人乘风破浪,有人悄然掉队
后端
敖正炀12 小时前
Spring 深度内核-核心容器与扩展机制-声明式事务的内部 AOP 实现:TransactionInterceptor 全解
spring
用户974369707252812 小时前
5分钟搭建企业级实时消息推送系统
后端·websocket