本文主要是介绍day07-缓存套餐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
业务逻辑
1. 导入Spring Cache和Redis相关坐标
2. 开启缓存注解功能
3. 用户端添加注解
4. 管理端添加注解
1. 导入Spring Cache和Redis相关坐标
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
2. 开启缓存注解功能
@SpringBootApplication
@EnableTransactionManagement
@Slf4j
@EnableCaching //开启缓存注解功能
public class SkyApplication {public static void main(String[] args) {SpringApplication.run(SkyApplication.class, args);log.info("server started");}
}
3. 用户端添加注解
user.SetmealController.java
使用@Cacheable注解
先查询缓存中是否有数据
有数据:直接返回数据,无需查询数据库
无数据:执行SQL语句进行查询,将查询的结果缓存到redis中
/*** 条件查询* @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根据分类id查询套餐")@Cacheable(cacheNames = "setmealCache", key = "#categoryId") //redis中的key名称:setmealCache::100public Result<List<Setmeal>> list(Long categoryId) {Setmeal setmeal = new Setmeal();setmeal.setCategoryId(categoryId);setmeal.setStatus(StatusConstant.ENABLE);List<Setmeal> list = setmealService.list(setmeal);return Result.success(list);}
4. 管理端添加注解
在新增、删除、修改、起停售中删除redis中的缓存
使用**@CacheEvict**
/*** 新增套餐* @param setmealDTO* @return*/@PostMapping@ApiOperation("新增套餐")@CacheEvict(cacheNames = "setmealCache", key = "#setmealDTO.categoryId") //key为 setmealCache::100public Result save(@RequestBody SetmealDTO setmealDTO) {setmealService.saveWithDish(setmealDTO);return Result.success();}/*** 批量删除套餐* @param ids* @return*/@DeleteMapping@ApiOperation("批量删除套餐")@CacheEvict(cacheNames = "setmealCache", allEntries = true) //清理掉所有的缓存数据public Result delete(@RequestParam List<Long> ids){setmealService.deleteBatch(ids);return Result.success();}/*** 修改套餐* @param setmealDTO* @return*/@PutMapping@ApiOperation("修改套餐")@CacheEvict(cacheNames = "setmealCache", allEntries = true) //清理掉所有的缓存数据public Result update(@RequestBody SetmealDTO setmealDTO) {setmealService.update(setmealDTO);return Result.success();}/*** 套餐起售停售* @param status* @param id* @return*/@PostMapping("/status/{status}")@ApiOperation("套餐起售停售")@CacheEvict(cacheNames = "setmealCache", allEntries = true) //清理掉所有的缓存数据public Result startOrStop(@PathVariable Integer status, Long id) {setmealService.startOrStop(status, id);//将所有的菜品缓存数据清理掉,所有以dish_开头的keycleanCache("dish_*");return Result.success();}
这篇关于day07-缓存套餐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!