前言
代码主要是实现将redis中存储的数据(Key 的格式为 cake_蛋糕分类id:蛋糕id,value 为一个实体类对象格式的 Json 字符串;使用StringRedisTemplate存储)获取到list中
代码
完整代码
package org.lanqiao.service;
import cn.hutool.json.JSON;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import org.lanqiao.entity.CakeInfo;
import org.lanqiao.mapper.CakeInfoDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
@Service
public class CakeInfoServiceImpl implements CakeInfoService {
@Autowired
CakeInfoDao cid;
@Autowired
StringRedisTemplate srt;
@Override
public List<CakeInfo> findCakeInfo(int cakeClassId) {
/**
* Find all keys matching the given pattern.
*/
String keypattern = "cake_" + cakeClassId + ":*";
Set<String> keys = srt.keys(keypattern);
System.out.println("keys is" + keys);
List<CakeInfo> cakeInfoList = new ArrayList<>();
List<String> list = Arrays.asList(keys.toArray(new String[0]));
list.forEach((s) -> {
/**
* 利用hutool工具进行类型拷贝
*/
CakeInfo bean = JSONUtil.toBean((JSONObject) JSONUtil.parse(srt.opsForValue().get(s)),CakeInfo.class);
cakeInfoList.add(bean);
});
return cakeInfoList;
}
}
其中下面的代码是使用hutool工具实现的拷贝,想问一下如果要求不用任何第三方工具如何实现不同list泛型间转换?如list<String>
与list<CakeInfo>
转化
list.forEach((s) -> {
/**
* 利用hutool工具进行类型拷贝
*/
CakeInfo bean = JSONUtil.toBean((JSONObject) JSONUtil.parse(srt.opsForValue().get(s)),CakeInfo.class);
cakeInfoList.add(bean);
});
使用jackson 来转换