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=?

  • 相关阅读:
    MongoDB 启动和关闭
    java protostuff 序列化反序列化工具
    第一天
    第六章
    第六章
    第六章
    第六章
    第五章---面向对象---1.软件开发/2.异常处理/3.try...except的详细用法
    第五章-面向对象-1.元类介绍/2.自定义元类控制类的行为/3.控制类的实例化行为/4.控制类的实例化行为的应用
    第五章---面向对象---1.绑定方法与非绑定方法介绍/2.绑定方法与非绑定方法应用/3.反射/4.内置方法
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/11312284.html
Copyright © 2011-2022 走看看