redis中存储list<map>,list<entity>的处理

 更新时间:2024年06月20日 11:30:46   作者:geekmice  
本文主要介绍了redis中存储list<map>,list<entity>的处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

用到的工具类

1、序列化操作

String multiMapStr = JSON.toJSONString(multiMapList); // list转换为json字符串
Object o = JSON.parse(userList); // list转换为object
List<Map<String, String>> maps = CastBeanUtil.castListMap(JSON.parse(userList), String.class, String.class);// object转换list
List tzAreas = JSON.parseArray(res, TzArea.class); // 反序列化,json字符串转换为list

2、object转换为指定类型的map或者其他类型

使用如下工具类,可以将object转换为list《map》

package com.geekmice.springbootselfexercise.utils;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @BelongsProject: spring-boot-self-exercise
 * @BelongsPackage: com.geekmice.springbootselfexercise.utils
 * @Author: pingmingbo
 * @CreateTime: 2023-12-09  15:34
 * @Description: 缓存工具类
 * @Version: 1.0
 */
public class CastBeanUtil {

    private CastBeanUtil() {
    }

    /**
     * Json.parseArray返回object需要转换,该方法可以转换为字符串类型或者其他引用类型
     * 问题:双层for循环
     * @param obj 源数据
     * @param kCalzz key对应class类型
     * @param vCalzz value对应class类型
     * @param <K>key类型
     * @param <V>value类型
     * @return list<map>
     */
    public static <K, V> List<Map<K, V>> castListMap(Object obj, Class<K> kCalzz, Class<V> vCalzz) {
        List<Map<K, V>> result = new ArrayList<>();
        if (obj instanceof List<?>) {
            for (Object mapObj : (List<?>) obj) {
                if (mapObj instanceof Map<?, ?>) {
                    Map<K, V> map = new HashMap<>(16);
                    for (Map.Entry<?, ?> entry : ((Map<?, ?>) mapObj).entrySet()) {
                        map.put(kCalzz.cast(entry.getKey()), vCalzz.cast(entry.getValue()));
                    }
                    result.add(map);
                }
            }
            return result;
        }
        return null;
    }

}

通过字符串类型处理

list《map》形式
key:字符串
val:序列化过的字符串

List<Map<String, String>> multiMapList = Lists.newArrayList();
for (int i = 0; i < 5; i++) {
     LinkedHashMap<String, String> itemMap = Maps.newLinkedHashMap();
     itemMap.put("name", "jack" + i);
     if (i % 2 == 0) {
         itemMap.put("age", String.valueOf(10 + i));
         itemMap.put("sex", "男");
     } else {
         itemMap.put("age", String.valueOf(11 + i));
         itemMap.put("sex", "女");
     }
     multiMapList.add(itemMap);
 }
String multiMapStr = JSON.toJSONString(multiMapList);
client.opsForValue().set("str:multiusers", multiMapStr, DateConstant.TIME_OF_DAY, TimeUnit.SECONDS);
String userList = client.opsForValue().get("str:multiusers");
List<Map<String, String>> maps = CastBeanUtil.castListMap(JSON.parse(userList), String.class, String.class);
log.info("maps : [{}]", maps);

list《entity》结构数据

List<TzArea> areaList = Lists.newArrayList();
 for (int i = 0; i < 10; i++) {
     TzArea item = new TzArea();
     item.setAreaId((long) i);
     item.setAreaName("江苏省");
     item.setLevel(1);
     item.setParentId(1L);
     areaList.add(item);
 }

 client.opsForValue().set("str:multiareas", JSON.toJSONString(areaList), DateConstant.TIME_OF_DAY, TimeUnit.SECONDS);
 String res = client.opsForValue().get("str:multiareas");
 List<TzArea> tzAreas = JSON.parseArray(res, TzArea.class);
 log.info("tzAreas : [{}]", JSON.toJSONString(tzAreas));

到此这篇关于redis中存储list<map>,list<entity>的处理的文章就介绍到这了,更多相关redis list<map> list<entity>内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Spring Boot 非web应用程序的实现

    Spring Boot 非web应用程序的实现

    SpringBoot框架中,要创建一个非Web应用程序(纯 Java 程序),有两种方式,下面就来介绍一下,感兴趣的可以来了解一下
    2025-03-03
  • spring boot接收请求常用注解示例详解

    spring boot接收请求常用注解示例详解

    这篇文章介绍了Spring Boot中常用的接收请求的注解,包括`@RequestBody`、`@PathVariable`、`@RequestParam`和`@DateTimeFormat`,并提供了每个注解的示例,感兴趣的朋友跟随小编一起看看吧
    2025-02-02
  • SpringBoot中Controller的传参方式详细讲解

    SpringBoot中Controller的传参方式详细讲解

    这篇文章主要介绍了SpringBoot在Controller层接收参数的常用方法,Controller接收参数的常用方式总体可以分为三类,第一类是Get请求通过拼接url进行传递,第二类是Post请求通过请求体进行传递,第三类是通过请求头部进行参数传递,下面我们来详细看看
    2023-01-01
  • SpringBoot拦截器实现登录拦截的方法示例

    SpringBoot拦截器实现登录拦截的方法示例

    这篇文章主要介绍了SpringBoot拦截器实现登录拦截的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • java多线程编程之使用thread类创建线程

    java多线程编程之使用thread类创建线程

    在Java中创建线程有两种方法:使用Thread类和使用Runnable接口。在使用Runnable接口时需要建立一个Thread实例
    2014-01-01
  • Java redisson实现分布式锁原理详解

    Java redisson实现分布式锁原理详解

    这篇文章主要介绍了Java redisson实现分布式锁原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • SpringBoot后端验证码的实现示例

    SpringBoot后端验证码的实现示例

    为了防止网站的用户被通过密码典爆破,引入验证码的功能是十分有必要的,本文主要介绍了SpringBoot后端验证码的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • IDEA常用插件之类Jar包搜索Maven Search解读

    IDEA常用插件之类Jar包搜索Maven Search解读

    文章介绍了IDEA常用插件MavenSearch的使用方法,该插件可以帮助用户快速查找和浏览Maven中央存储库中可用的依赖项和插件,方便用户管理项目依赖项
    2025-01-01
  • SpringBoot+RabbitMq具体使用的几种姿势

    SpringBoot+RabbitMq具体使用的几种姿势

    这篇文章主要介绍了SpringBoot+RabbitMq具体使用的几种姿势,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • 如何利用Spring Boot 监控 SQL 运行情况

    如何利用Spring Boot 监控 SQL 运行情况

    这篇文章主要介绍了如何利用Spring Boot监控SQL运行情况,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07

最新评论