在使用SpringBoot时基本的缓存操作,步骤如下:
1.实体类和DAO层省略
2.测试类:
/**
* (一)搭建基本环境
* 1.导入数据库文件,创建出department和employee表
* 2.创建javaBean封装数据
* 3.整合Mybatis操作数据库
* 1)配置数据源信息
* 2)使用注解版Mybatis
* 1.使用@MapperScan注解指定需要扫描的mapper接口所在的包
* (二)快速体验缓存
* SpringBoot步骤:
* 1)开启注解的缓存EnableCaching
* 2)标注缓存注解即可
* Cacheable-标注方法缓存
* CacheEvict-清空缓存
* CachePut-保证方法被调用,又希望结果被缓存
*/
@MapperScan("com.springboot01cache.mapper")
@SpringBootApplication
@EnableCaching
public class Springboot01CacheApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01CacheApplication.class, args);
}
}
3.service类:
/**
* 将方法的结果进行缓存,以后再要相同的数据,直接从缓存中获取,不用调用方法
* <p>
* CacheManager(缓存管理器)管理多个cache组件的,对缓存的真正CRUD操作在cache组件中,每一个缓存组件都有一个唯一自己的名字
* 注解Cacheable中的几个属性:
* cacheNames/value:指定缓存组件的名字
* key:缓存数据使用的key,可以用它来指定,默认是使用方法参数的值,如下参数是1的话,值就是返回值
* 如果编写SpEl的话:#id,这些都是参数id的值, #a0,#p0,#root.args[0]
* keyGenerator:key的生成器,可以自己指定key的生成器的组件id
* key/keyGenerator:二选一使用
* cacheManager:指定缓存管理器,或者cacheResolver指定获取解析器
* condition:指定符合条件的情况才使用缓存,如condition="#id>0"
* unless:否定缓存,当unless指定的条件为true,方法的返回值就不会缓存,可以获取到结果进行判断
* unless="#result==null"
* sync:是否使用异步模式
* @param id
* @return
*/
@Cacheable(cacheNames = {"emp"})
public Employee getEmp(Integer id) {
System.out.println("查询" + id);
Employee employee = employeeMapper.getEmpById(id);
return employee;
}
基本的缓存使用