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

缓存商品、购物车

缓存菜品

实现思路

代码开发

缓存菜品数据

清理缓存数据

新增菜品

修改菜品

批量删除菜品

起售、停售菜品

抽取到方法

缓存套餐

[Spring Cache](#Spring Cache)

入门案例

@EnableCaching

@CachePut

@Cacheable

@CacheEvict

代码开发

[导入Spring Cache和Redis相关maven坐标](#导入Spring Cache和Redis相关maven坐标)

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

[在用户端接口SetmealController的 list 方法上加入@Cacheable注解](#在用户端接口SetmealController的 list 方法上加入@Cacheable注解)

[在管理端接口SetmealController的 save、delete、update、startOrStop等方法上加入CacheEvict注解](#在管理端接口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接口中创建删除购物车数据的方法

相关推荐
J_bean2 小时前
MySQL 事务是否必须手动开启?
数据库·mysql·数据库事务·自动提交·手动提交
J_bean2 小时前
MySQL InnoDB 如何检测死锁、判定死锁、处理死锁
数据库·mysql·死锁·死锁检测·处理死锁·死锁判定
Flittly5 小时前
【雕虫大技】Agent 动态 Skill 供应链安全加固(三):输出校验与治理闭环实战
java·spring boot·spring
天疆说6 小时前
01 硬件选型与 llama.cpp 部署:4× RTX 5880 Ada 跑 DeepSeek-V4-Flash
java·redis·llama
嘟嘟07177 小时前
Next.js 博客左侧笔记列表是怎么从 Redis 渲染出来的?从组件、children 到动态路由一次讲清
redis·react.js·前端工程化
冰暮流星7 小时前
mysql之分组查询
数据库·mysql
番茄炒鸡蛋加糖7 小时前
项目技术点总结--四大核心技术+缓存
缓存
大飞记Python8 小时前
AI大模型Token计费全解析:输入/输出、缓存命中、阶梯计价一文看懂
人工智能·缓存
NiceCloud喜云8 小时前
腾讯云国际版云数据库选型:MySQL、Redis 怎么按业务架构来判断
数据库·mysql·腾讯云
ew452188 小时前
MySQL JOIN 关联语法、差异、标准用法、经典坑点汇总
数据库·mysql