springboot的缓存可以让我们系统性能提升,比如每次查询数据库的时候,如果设置了缓存,那么第二次查询同一数据那便直接从缓存中取值。

1,启动缓存

//com.quking.springboot01cache.Springboot01CacheApplication
@MapperScan("com.quking.springboot01cache.mapper")
@SpringBootApplication
@EnableCaching   //在启动项中允许缓存
public class Springboot01CacheApplication {public static void main(String[] args) {SpringApplication.run(Springboot01CacheApplication.class, args);}
}

2,在方法中设置缓存

@Service
public class EmployeeService {@Autowiredprivate EmployeeMapper employeeMapper;@Cacheable(cacheNames = "emp",condition = "#id>0")  //id>0的时候才缓存,可以指定条件   public Employee getEmployeeById(Integer id){//cacheNames 指定名称  condition指定条件System.out.println("正在查询"+id+"号员工");Employee employee = employeeMapper.getEmployeeById(id);return employee;}
}

3,写一个控制类来测试

@RestController
public class EmployeeController {@Autowiredprivate EmployeeService employeeService;@GetMapping("/emp/{id}")public Employee getEmployeeById(@PathVariable("id") Integer id){Employee employee = employeeService.getEmployeeById(id);return employee;}
}

接口(基于注解的mybatis):

@Mapper
public interface EmployeeMapper {@Select("select * from employee where id = #{id}")public Employee getEmployeeById(Integer id);@Delete("delete from employee where id = #{id}")public void deleteEmployee(Integer id);
}

这是服务层(每次查询数据库都会打印:正在查询"+id+"号员工)

@Service
public class EmployeeService {@Autowiredprivate EmployeeMapper employeeMapper;@Cacheable(cacheNames = "emp",condition = "#id>0")  //id>0的时候才缓存,可以指定条件public Employee getEmployeeById(Integer id){System.out.println("正在查询"+id+"号员工");     //如果每次查询数据库都会调用这个Employee employee = employeeMapper.getEmployeeById(id);return employee;}
}
@Cacheable 里面的参数 :
cacheNames :缓存名字
condition:缓存条件,可以传EL表达式,如上
key:缓存数据使用的key,默认是方法参数
unless:否定缓存 当unless指定的条件为TRUE时,方法的返回值不会被缓存,可以获取结果
进行判断  unless="#result=null"  表示结果返回值为null时,不缓存
sync:是否使用异步

如果后台没有打印说明调用缓存,不是查询的数据库。localhost:8080/emp/1 测试

@CachePut
修改数据库后,自动更新缓存,也就是说修改数据库后,下次用查询数据库就不用去数据库中查找,直接从缓存中取出来。
@CacheEvict
缓存清除

Springboot高级特性——缓存相关推荐

  1. SpringBoot高级特性

    SpringBoot高级特性 SpringBoot缓存 基本环境搭建 导入数据库文件,创建出 department 和 employee 数据表 创建 JavaBean 封装数据 整合 Mybatis ...

  2. redis 经纬度_【SpringBoot DB 系列】Redis 高级特性之 GEO

    [SpringBoot DB 系列]Redis 高级特性之 GEO GEO 用于存储地理信息,最直观的就是我们日常使用的地图 app 中,如果我想查询我所在地的周边餐饮,就可以利用 geo 中的以(x ...

  3. Redis基础用法、高级特性与性能调优以及缓存穿透等分析

    目录 一.Redis介绍 二.Redis数据结构及常用的命令 三.Redis持久化策略选择 四.内存管理与数据淘汰机制 五.Redis过期策略及实现原理 1  说明 2  设置过期时间 3  三种过期 ...

  4. SpringBoot高级-缓存-搭建redis环境测试

    实际开发中我们用的是缓存中间件,比如我们经常使用的Redis,memcache,包括ehcache,我们都是用一些缓存中间件,Springboot支持很多缓存的配置,而默认开启的是SimpleCach ...

  5. 4.2.4 Kafka高级特性解析(物理存储、稳定性:事物,控制器,可靠性,一致性,_consumer_offsets、延时队列、自定义重试队列)

    Kafka高级特性解析 文章目录 Kafka高级特性解析 2.5 物理存储 2.5.1 日志存储概述 2.5.2 日志存储 2.5.2.1 索引 2.5.2.1.1 偏移量 2.5.2.1.2 时间戳 ...

  6. Nacos高级特性Raft算法以及原理和源码分析

    Nacos高级特性Raft算法以及原理和源码分析 对比springcloud-config配置中心 springcloud-config工作原理 Nacos的工作原理图 springcloud-con ...

  7. springboot高级篇及springboot1.5转springboot2.17所遇到的坑

    SpringBoot的高级教程 一.SpringBoot缓存 缓存的场景 临时性数据存储[校验码] 避免频繁因为相同的内容查询数据库[查询的信息] 1.JSR107缓存规范 用的比较少 Java Ca ...

  8. Dubbo(二):Dubbo 基础配置Xml、注解方式 和 高级特性

    Dubbo的基础配置 Xml方式 注解方式 Dubbo的基础配置使用 启动时检查 超时重连 集群容错 负载均衡配置 结果缓存 服务分组 多版本 只订阅/只注册 异步调用 事件通知 参数回调 本地伪装- ...

  9. Spark Streaming高级特性在NDCG计算实践

    从storm到spark streaming,再到flink,流式计算得到长足发展, 依托于spark平台的spark streaming走出了一条自己的路,其借鉴了spark批处理架构,通过批处理方 ...

最新文章

  1. Android 插件化原理解析——Hook机制之AMSPMS
  2. 企业官网示例以及数据库表结构
  3. POJ 并查集 题目汇总 ——czyuan原创(转)
  4. 自己实现简单的AOP(三) 实现增强四项基本功能
  5. java 主方法 this_java main 方法怎么创建
  6. MapReduce操作时Error:The method setInputPaths(JobConf, String) in the type FileInputFormat is not
  7. PHPCMS V9 为今天或几天前文章加new
  8. 19SpringMvc_在业务控制方法中收集List集合中包含JavaBean参数
  9. 上海的雨什么时候才可以停...
  10. Spring Batch 4.2.0.M1 发布,批处理应用编写框架
  11. Java和JavaScript中使用Json方法大全
  12. java看懂程序_手把手教你运行第一个 Java 程序,看不懂你来骂我!
  13. 日常小tip_Bat命令运行Java程序
  14. keevi源地址_2019年越狱源地址排行是怎样的?
  15. 航空三字代码表_航空公司二字及三字代码表
  16. pythonend输出最后没有逗号_python不换行之end=与逗号的意思及用途
  17. 随机数——不可预测性的源泉
  18. 科研小白之SCI论文、EI论文和IEEE论文有什么区别?国内分区与SCI等的联系
  19. 电信运营商基于 MQTT 协议 构建千万级 IoT 设备管理平台
  20. 为何魅族智能家居生态圈更值得期待

热门文章

  1. Apache工作模式详解
  2. QTP中VBS脚本下FSO、WSH的应用(二)
  3. linux上docker安装centos7.2
  4. Docker(十二)关于deployment 创建的小坑
  5. Lucence.net索引技术 一
  6. poj 3461 Oulipo (KMP)
  7. ISA Server 2004 企业 IT 常见应用速查
  8. SpringBoot 第一篇入门
  9. PipedInputStream类 和 PipedOutputStream类 的简单介绍和代码演示
  10. netty 水位线与oom