zoukankan      html  css  js  c++  java
  • Spring Boot 之 springcache的使用

    一、开启 springcache,启动类添加 @EnableCaching 注解

    @SpringBootApplication
    @EnableCaching
    public class GatheringApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(GatheringApplication.class, args);
        }
    }

    二、添加缓存,修改 findById 方法 通过 @Cacheable 添加缓存

        /**
         * 根据ID查询实体
         * @param id
         * @return
         */
        @Cacheable(value = "gathering",key = "#id")
        public Gathering findById(String id) {
            System.out.println("查询次数:"+i++);
            return gatheringDao.findById(id).get();
        }

    三、删除缓存,修改 update 和 deleteById 方法 通过 @CacheEvict 删除缓存

    /**
         * 修改
         * @param gathering
         */
        @CacheEvict(value = "gathering",key = "#gathering.id")
        public void update(Gathering gathering) {
            gatheringDao.save(gathering);
        }
    
        /**
         * 删除
         * @param id
         */
        @CacheEvict(value = "gathering",key = "#id")
        public void deleteById(String id) {
            gatheringDao.deleteById(id);
        }

    四、执行结果

    1、点击了5次查询,只有一次进入了方法体并,访问了数据库。其余4次都是从缓存中取数据。

      查询次数:1   Hibernate: select gathering0_.id as id1_0_0_, gathering0_.address as address2_0_0_ from tb_gathering gathering0_ where gathering0_.id=?

    2、执行修改方法

       Hibernate: select gathering0_.id as id1_0_0_, gathering0_.address as address2_0_0_ from tb_gathering gathering0_ where gathering0_.id=?
       Hibernate: update tb_gathering set address=?, city=?, detail=?, endtime=?, enrolltime=?, where id=?

     3、再次查询(点击5次),因为执行 修改方法时,也删除了缓存,所以本次查询可以进入方法体,并交互数据库

       查询次数:2
       Hibernate: select gathering0_.id as id1_0_0_, gathering0_.address as address2_0_0_ from tb_gathering gathering0_ where gathering0_.id=?

     4、执行删除方法

       Hibernate: select gathering0_.id as id1_0_0_, gathering0_.address as address2_0_0_ from tb_gathering gathering0_ where gathering0_.id=?
       Hibernate: delete from tb_gathering where id=?

     5、再次查询(点击5次),因为执行 删除方法时,也删除了缓存,所以本次查询可以进入方法体,并交互数据库,但未查询出结果 

       查询次数:3
        Hibernate: select gathering0_.id as id1_0_0_, gathering0_.address as address2_0_0_ from tb_gathering gathering0_ where gathering0_.id=?

  • 相关阅读:
    Eclipse / android studio 添加第三方jar包 步骤
    Android checkbox 自定义点击效果
    Android 程序打包和安装过程
    Android 基础
    (转)Genymotion安装virtual device的“unable to create virtual device, Server returned Http status code 0”的解决方法
    (转)eclipse 导入Android 项目 步骤
    微信开放平台注册 步骤
    Android Studio 初级安装
    数组
    作用域问题代码
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/11312284.html
Copyright © 2011-2022 走看看