@Cacheable(key="'categories-all'") public List<Category> list() { // Sort sort = new Sort(Sort.Direction.DESC, "id"); // return categoryDAO.findAll(sort); // System.out.println("调用mapper的listDesc()!!!"); return categoryMapper.listDesc(); }
时间: 2023-06-27 11:08:27 浏览: 91
这是一个使用了Spring框架的缓存注解@Cacheable的方法,用于获取所有的Category对象列表。如果缓存中已经存在了key为'categories-all'的缓存,则直接从缓存中获取数据,否则会执行方法内部的逻辑,查询数据库并将结果存入缓存中。同时,这个方法还使用了MyBatis框架的注解@Select,调用了CategoryMapper接口中的listDesc()方法,查询数据库中的数据。最终返回查询结果。
相关问题
使用private static Map<String,List<IndustryInfoDTO>> industryInfoCache = new HashMap<>(); @GetMapping("/industryInfo") public Result getIndustryInfo(){ List<IndustryInfoDTO> list = industryInfoCache.get("list"); if (list == null){ list = enterpriseDetailsService.getIndustryInfo(); industryInfoCache.put("list",list); } return new Result().ok(list); }做缓存 优化代码 可以刷新
你可以使用@Cacheable和@CacheEvict注解来对这段代码进行优化和刷新缓存。
首先,你需要在应用程序的配置类中启用缓存,例如:
```
@Configuration
@EnableCaching
public class CacheConfig {
// 缓存管理器
@Bean
public CacheManager cacheManager() {
return new ConcurrentMapCacheManager("industryInfo");
}
}
```
接下来,你可以将@Cacheable注解添加到getIndustryInfo()方法上,以指示Spring在调用该方法之前检查缓存,如果存在缓存,则直接返回缓存中的值,而不是执行方法。例如:
```
@Cacheable("industryInfo")
@GetMapping("/industryInfo")
public Result getIndustryInfo() {
List<IndustryInfoDTO> list = enterpriseDetailsService.getIndustryInfo();
return new Result().ok(list);
}
```
这将在调用getIndustryInfo()方法时将其结果缓存到名为"industryInfo"的缓存中。
如果你想要手动刷新缓存,可以添加一个@CacheEvict注解到另一个方法中,例如:
```
@CacheEvict("industryInfo")
@PostMapping("/refreshIndustryInfo")
public void refreshIndustryInfo() {
// do nothing, the cache will be automatically refreshed
}
```
这将使Spring在调用refreshIndustryInfo()方法时清除名为“industryInfo”的缓存,以便下一次调用getIndustryInfo()方法时重新查询数据库并重新缓存结果。
@Cacheable(value = "list.product",key = "#productHotParam.categoryName")
@Cacheable(value = "list.product", key = "...")
这是一个Spring框架中使用的注解,用于缓存方法的返回值。其中,value属性表示缓存的名称,key属性表示缓存的键值,用于唯一标识缓存中的数据。具体的键值需要根据实际情况进行设置。
阅读全文