1.起步依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId> <version>2.7.3</version>
</dependency>
2.常用注解
@EnableCaching 开启缓存注解功能,通常加在启动类上
@Cacheable 在方法执行前先查询缓存中是否有数据,有数据,直接返回缓存数据;没有数据,调用方法将方法返回值存到缓存中
@CachePut 将方法的返回值放到缓存中
@CacheEvict 将一条或多条数据从缓存中删除
3.用法:
/*
value:缓存的名称,每个缓存下面有多个key
key:缓存的key
user.id是从参数中取得
*/
@CachePut(value="userCache",key="#user.id")//key的生成:userCache::1
@CachePut(value="userCache",key="#result.id")//对象导航
@CachePut(value="userCache",key="#p0.id")
public User save(@RequestBody User user){
userMapper.insert(user);
return user;
}
#user.id : #user指的是方法形参的名称, id指的是user的id属性 , 也就是使用user的id属性作为key ;
#result.id : #result代表方法返回值,该表达式 代表以返回对象的id属性作为key ;
#p0.id:#p0指的是方法中的第一个参数,id指的是第一个参数的id属性,也就是使用第一个参数的id属性作为key ;
@Cacheable(cacheNames="userCache",key="#id")//key的生成:userCache::10
public User getById(Long id){
User user=userMapper.getById(id);
return user;
}
@CacheEvict(cacheNames="userCache",key="#id")//删除某个key对应的缓存数据
public void deleteById(Long id){
userMapper.deleteById(id);
}
@CacheEvict(cacheNames="userCache",allEntries=true)//删除userCache下所有的缓存数据
public void deleteAll(){
userMapper.deleteAll();
}