开发者学堂课程【SpringBoot 快速掌握 - 高级应用:@Caching&@ CacheConfig】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/613/detail/9294
@Caching&@ CacheConfig
@Caching& 这个注解相当于是
@Cacheable@CachePut@CacheEvict 三个注解的组合@Target({ ElementType .METHOD, ElementType .TYPE})@Retention( RetentionPolicy .RUNTIME)
@Inherited
@ Documented
public@ interfaceCaching {
Cacheable[]cacheable() default{};
CachePut[]put() default{};
CacheEvict []evict() default{};
}
//@Caching 定义复杂的缓存规则
@Caching(
cacheable={
@Cacheable(value="emp",key="#lastNme")
},
put={
@CachePut(value="emp",key="#result,id"),
@CachePut(value="emp",key="#result:email")
}
)
public Employee get Emp By LastName(String lastName){
return emp1oyeeMapper . getEmpByLastName (lastName);
测试过程:
package com. atguigu. cache. mapper;
import...
@Mapper
public interface EmployeeMapper {
@Select("SELECT* FROMemployeeWHEREid =#{id}")
public Employee getEmpById (Integer id);
@Update(" UPDATEemployeeSETlastName =#(1astName),email=#(email),gender=#(gender),d_id=#(guǎi)#He
public void updateEmp(Employee employee);
@Delete(" DELETEFROMemployeeWHEREid =#{id}")
public void delete EmpById(Integer id);
@Insert(" IMSERTINTOemployee (last/Bame,email,gender,d.id)VALUES(#(lastName),#(email),#(gender)#public
void insertEmployee (Employee employee);
@Select("SELECT* FROMemployeeWHERE1astName #(id}")
Employee getEmpByLastName (String last Name);
}
又一次测试:
@ GetMapping ("/emp/lastname/{1astName}")
public Employee getEmpByLastName (String lastName){
return emp1oyeeService , getEmpByLastName (lastName);
按名字查,查到了"1号张三",缓存注解就起作用了,不需要查数据库。但是查lastname 时还是要查数据库。
按照l astname 的 id 查就不需要查数据库。
@ CacheConfig ( cacheNames ="emp")//抽取缓存的公共配置
所有的缓存的公共配置都看这个。