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

  • 相关阅读:
    加密与解密学习笔记3-Windows与Unicode
    加密与解密学习笔记2-windows API函数
    加密与解密学习笔记1-文本编码方式
    python3基础知识自学笔记4-流程控制、迭代器、生成器
    python3基础知识自学笔记3-集合字典元组
    python3基础知识自学笔记2-列表
    在单链表按升序插入一个值
    [转]设置好ftp后用xftp连接提示无法打开,无法显示远程文件夹
    删除底部"自豪地采用 WordPress"
    win7一体机放音乐时只有音乐,人声特别小怎么回事
  • 原文地址:https://www.cnblogs.com/mww-NOTCOPY/p/11312284.html
Copyright © 2011-2022 走看看