• day07-缓存套餐


    业务逻辑

    1. 导入Spring Cache和Redis相关坐标
    2. 开启缓存注解功能
    3. 用户端添加注解
    4. 管理端添加注解

    1. 导入Spring Cache和Redis相关坐标

            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-cacheartifactId>
            dependency>
            
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-data-redisartifactId>
            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::100
        public Result<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::100
        public 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_开头的key
            cleanCache("dish_*");
            return Result.success();
        }
    
  • 相关阅读:
    @postconstruct注解获取不到本身的bean
    【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)
    大数据在智慧城市建设中的应用
    超详细 | 萤火虫算法原理及其实现(Matlab)
    debian11 安装 postgress 数据库 -- chatGPT
    DBCO-mannose 二苯并环辛炔-甘露糖,DBCO-PEG-mannose 二苯并环辛炔-聚乙二醇-甘露糖
    牛客NC314 体育课测验(一)【中等 图,BFS,拓扑排序 Java,Go、PHP】
    【Linux】gdb工具使用
    数据分析:基于Pandas的全球自然灾害分析与可视化
    Java面向对象07:简答小结类与对象
  • 原文地址:https://blog.csdn.net/qq_45801839/article/details/138628982