public WxShop getShop(String number){ if (!redisCache.hasKey(WX_SHOP_KEY)){ List<WxShop> list = shopDao.getShopList(); if (list == null){ throw new RuntimeException("no shops in database"); } Map<String, WxShop> shopMap = list.stream().collect(Collectors.toMap(WxShop::getNumber, Function.identity())); redisCache.setCacheMap(WX_SHOP_KEY, shopMap); } return redisCache.getCacheMapValue(WX_SHOP_KEY, number); }
时间: 2024-04-20 08:26:34 浏览: 13
这段代码是一个方法,用于获取商店对象。根据传入的商店编号(number),它首先检查是否在缓存(redisCache)中存在商店数据。
如果缓存中不存在商店数据,则从数据库中获取商店列表(使用 `shopDao.getShopList()` 方法)。如果数据库中没有商店数据,则抛出一个运行时异常。
接下来,它将商店列表转换为一个以商店编号为键、商店对象为值的映射(Map),并将该映射存储到缓存中(使用 `redisCache.setCacheMap()` 方法)。
最后,它通过调用 `redisCache.getCacheMapValue()` 方法,从缓存中获取指定商店编号对应的商店对象,并将其返回。
需要注意的是,代码中使用了 Java 8 的流式操作(stream)和函数式编程的特性,如 `collect(Collectors.toMap())` 方法和 `Function.identity()` 方法。这些方法用于方便地进行集合操作和转换。
相关问题
if (redisCache.hasKey(getCacheKey(loginName))) { redisCache.deleteObject(getCacheKey(loginName)); }怎么改成基本的boolean表达式
你可以将上述代码改写成以下形式的布尔表达式:
```
redisCache.hasKey(getCacheKey(loginName)) && redisCache.deleteObject(getCacheKey(loginName));
```
这里使用了逻辑与运算符(&&),它会先计算左侧的表达式,如果为真,则继续计算右侧的表达式,否则直接返回假。因此,只有在 Redis 缓存中存在指定的键名时,才会调用 `deleteObject` 方法来删除该键名对应的缓存对象,并返回真。如果键名不存在,则直接返回假,不会执行删除操作。
@Override public List<RoomModel> getRoomModel(String tenantId, QueryData queryData) { String sql ="select * from jg_room where delete_tag = 1 and tenant_id =:tenantId ORDER BY id ASC "; Map<String, Object> param = new HashMap<>(); param.put("tenantId", tenantId); if (queryData.hasKey("roomOrientation")){ sql="select * from jg_room where delete_tag = 1 and tenant_id =:tenantId and room_orientation =: roomOrientation ORDER BY id ASC "; param.put("roomOrientation", queryData.getStrValue("roomOrientation")); } return this.sqlSearch(sql,RoomModel.class,param); }这个语法有错误么
这段代码中有一个语法错误,具体来说是在第9行中,分号后面的空格导致了一个语法错误。正确的代码应该是:
```
@Override
public List<RoomModel> getRoomModel(String tenantId, QueryData queryData) {
String sql ="select * from jg_room where delete_tag = 1 and tenant_id =:tenantId ORDER BY id ASC ";
Map<String, Object> param = new HashMap<>();
param.put("tenantId", tenantId);
if (queryData.hasKey("roomOrientation")){
sql="select * from jg_room where delete_tag = 1 and tenant_id =:tenantId and room_orientation =:roomOrientation ORDER BY id ASC "; // 去掉空格
param.put("roomOrientation", queryData.getStrValue("roomOrientation"));
}
return this.sqlSearch(sql, RoomModel.class, param);
}
```
注意到第9行中的 `:roomOrientation` 前面没有空格。这是因为 SQL 语句中的参数占位符和参数名称之间不应该有空格。