RedisTemplate取值类型转换问题
当用到redis缓存数据库数据时,存的时候,可以是String,可以是处理过的对象,还可以是List集合...,但是在取数据时,作为操作者的你需要对接收到的数据类型做转换,否则类型不一致,影响返回和接收。类型转换方式一:封装方法封装关于redis的get方法,通过泛型对值类型进行转换。//存储时,value为一个对象,返回时,value默认为 object类型,需要进行类型转换@SuppressW
·
当用到redis缓存数据库数据时,存的时候,可以是String,可以是处理过的对象,还可以是List集合...,但是在取数据时,作为操作者的你需要对接收到的数据类型做转换,否则类型不一致,影响返回和接收。
类型转换方式一:封装方法封装关于redis的get方法,通过泛型对值类型进行转换。
//存储时,value为一个对象,返回时,value默认为 object类型,需要进行类型转换
@SuppressWarnings("unchecked")
public static <T> List<T> getList(String key, Class<T> clazz) {
Object value = redisTemplate.opsForValue().get(key);
if (value != null) {
return (List<T>) value;
}
return null;
}
//存储时,value为一个List集合对象,返回时,需要进行类型转换
@SuppressWarnings("unchecked")
public static <T> List<T> get(String key, Class<T> clazz) {
Object value = redisTemplate.opsForValue().get(key, hashKey);
if (value != null) {
return (T) value;
}
return null;
}
//调用示例:
//存对象 查询到的一条Person对象数据
redisTemplate.opsForValue().set("zhangsan", Person);
//取 需要接受Person对象类型 调用自定义的get方法
Person p1 = get("zhangsan", Person.class);
//存List集合对象 查询到的多条条Person对象数据
redisTemplate.opsForValue().set("persons", List<Person>);
//取 需要接收List<Person>类型
List<Person> list = getList("zhangsan", Person.class);
Person p1 = get("zhangsan", Person.class);
可能会有类型转换异常,此时可使用方式二
类型转换方式二:使用JSON
//JsonUtils.toJsonStr(person)作用:将person对象数据转换为json字符转【方法可以网上自行百度(很简单)】
//注意:是转换为JSON字符串,不是通过Person实体类的toString()将其转换为String。此时存进去的value是JSON字符串类型
redisTemplate.opsForValue().set("zhangsan", JSON.toJSONString(person));
//取数据:将JSON字符串转换为指定的java对象接收
String value = redisTemplate.opsForValue().get("zhangsan");
if(value != null) {
Person p2= JSONObject.parseObject(value, Person.class);
return p2;
两种方法主要提供思路供人参考.......................................
更多推荐
所有评论(0)