课后作业
首先是ShopTypeController
@RestController
@RequestMapping("/shop-type")
public class ShopTypeController {
@Resource
private IShopTypeService typeService;
@GetMapping("list")
public Result queryTypeList() {
//注释掉的内容 为没有通过redis缓存查询的方法
// List<ShopType> typeList = typeService
// .query().orderByAsc("sort").list();
// return Result.ok(typeList);
return typeService.queryList();
}
}
然后service层添加方法
public interface IShopTypeService extends IService<ShopType> {
Result queryList();
}
最后是impl层
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Resource
private IShopTypeService typeService;
@Resource
private StringRedisTemplate stringRedisTemplate;
@Override
public Result queryList() {
String key = CACHE_TYPE_KEY;
//1、先尝试从redis中查询
String shopTypeJson = stringRedisTemplate.opsForValue().get(key);
//2、判断是否为空
if(StrUtil.isNotBlank(shopTypeJson)){
//3、不为空 则直接返回
List<ShopType> shopTypeList = JSONUtil.toList(shopTypeJson, ShopType.class);
Result.ok(shopTypeList);
}
//4、为空 则从数据库中查询
List<ShopType> shopTypeList = typeService
.query().orderByAsc("sort").list();
//5、数据库中为空 直接返回错误信息
if(shopTypeList == null){
Result.fail("店铺类不存在....");
}
//6、存在 则直接写入redis
stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shopTypeList));//将店铺类型信息转为JSON字符串存入redis
//7、返回
return Result.ok(shopTypeList);
}
}
测试通过