黑马点评项目P37作业List存储

该代码示例展示了如何通过SpringBoot的控制器、服务接口和服务实现来查询所有店铺类型。首先尝试从Redis缓存中获取数据,如果缓存存在则直接返回,否则从数据库查询店铺类型,将查询结果存入Redis并返回。这种方式提高了查询效率。
摘要由CSDN通过智能技术生成

ShopTypeController

/**
     * 查询所有店铺类型
     * @return
     */
    @GetMapping("list")
    public Result queryTypeList() {
        return typeService.queryTypeList();
    }

IShopTypeService

public interface IShopTypeService extends IService<ShopType> {

    /**
     * redis优化查询所有店铺类型集合
     * @return
     */
    Result queryTypeList();
}

ShopTypeServiceImpl

@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {

    @Resource
    private StringRedisTemplate stringRedisTemplate;

    /**
     * redis优化查询所有店铺类型集合
     * @return
     */
    @Override
    public Result queryTypeList() {

        // 先看看 redis 缓存里面有没有存入店铺类型集合
        List<String> shopTypeList = stringRedisTemplate.opsForList().range(RedisConstants.CACHE_SHOP_KEY, 0, 1);
        if (CollectionUtil.isNotEmpty(shopTypeList)) {
            // 缓存里有直接返回
            return Result.ok(shopTypeList);
        }

        // 没有缓存,从数据库查询
        List<ShopType> shopTypes = query().orderByAsc("sort").list();
        // 如果数据库没有则返回异常
        if (shopTypes.isEmpty()) {
            return Result.fail("查询店铺类型异常");
        }
        // 设置到缓存里面
        shopTypes.stream().
                forEach(shopType -> {
                    stringRedisTemplate.opsForList().leftPushAll(RedisConstants.CACHE_SHOP_KEY,JSONUtil.toJsonStr(shopTypes));
                });
        return Result.ok(shopTypes);
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值