Bean和Map转换的工具类

2023-11-05

Bean和Map转换的工具类

依赖包:

基于Spring的cglib 实现。如果是Spring项目,可以不引入依赖。

```
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-core</artifactId>
	<version>5.3.8</version>
</dependency>
```

工具类如下:

import org.springframework.cglib.beans.BeanMap;
import java.util.HashMap;
import java.util.Map;


public class BeanMapUtil {

    /**
     * 将javaBean对象转换为map
     */
    public static <T> Map<String, Object> beanToMap(T bean) {
        Map<String, Object> map = new HashMap<>();
        if (bean != null) {
            BeanMap beanMap = BeanMap.create(bean);
            for (Object key : beanMap.keySet()) {
                Object value = beanMap.get(key);
                map.put(key + "", value);
            }
        }
        return map;
    }

    /**
     * 将map转换为javaBean对象
     * 注意:map的vaule类型,要与bean对应属性的类型一致
     */
    public static <T> T mapToBean(Map<String, Object> map, T bean) {
        if (map != null) {
            BeanMap beanMap = BeanMap.create(bean);
            beanMap.putAll(map);
        }
        return bean;
    }

}

使用示例:

public void testBeanToMap()  {
    Order order = Order.builder().id(1633376593701060610L).build();
    Map<String, Object> map = BeanMapUtil.beanToMap(order);
    System.out.println(map);
}


public void testMapToBean()  {
    Map<String, Object> map = new HashMap<>();
    //对应Order类的id字段为Long类型
    map.put("id", 12343276L);
    map.put("result", "testTest");
    Order order = new Order();
    BeanMapUtil.mapToBean(map, order);
    System.out.println(order);
}

参考资料:

https://blog.csdn.net/mybook201314/article/details/118336749https://www.zhihu.com/question/421708564

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Bean和Map转换的工具类 的相关文章

随机推荐

  • OpenCV3.3中主成分分析(Principal Components Analysis, PCA)接口简介及使用

    OpenCV3 3中给出了主成分分析 Principal Components Analysis PCA 的实现 即cv PCA类 类的声明在include opencv2 core hpp文件中 实现在modules core src p
  • SAS9.4安装简易教程(保姆级)附带报错处理

    SAS安装教程 正常安装 环境准备 文件准备及安装 增强编辑器问题 一些报错处理方法 1 安装后处理 解决方案1 解决方案2 2 日期超过了SAS系统的最后截至日期 解决方案 3 逻辑库问题 解决方案 4 sid及产品许可问题 解决方案 卸
  • JT格式介绍(转换)

    JT Jupiter Tessellation 是一种高效 专注于行业且灵活的 ISO 标准化 3D 数据格式 由 Siemens PLM Software 开发 航空航天 汽车工业和重型设备的机械 CAD 领域使用 JT 作为其最领先的
  • 我的世界服务器无限刷东西指令,我的世界无限刷物品命令方块指令

    发布时间 2015 09 11 精华文章推荐 合成表大全 前期生存图文指南 怪物图鉴及属性一览 敖厂长生存解说视频 新手建筑指导班 豪华建筑建造教程 俾斯麦号建造方法 WE建筑辅助教程 创建服务器方法指南 加入服务器联机教程 多 标签 攻略
  • 学习实践-Alpaca-Lora (羊驼-Lora)(部署+运行+微调-训练自己的数据集)

    Alpaca Lora模型GitHub代码地址 1 Alpaca Lora内容简单介绍 三月中旬 斯坦福发布的 Alpaca 指令跟随语言模型 火了 其被认为是 ChatGPT 轻量级的开源版本 其训练数据集来源于text davinci
  • elasticsearch介绍

    什么是elasticsearch Elasticsearch是一个基于Lucene的搜索服务器 它提供了一个分布式多用户能力的全文搜索引擎 基于RESTful web接口 Elasticsearch是用Java语言开发的 并作为Apache
  • 知道这10个让你的API接口突然超时的原因吗?

    前言 不知道你有没有遇到过这样的场景 我们提供的某个API接口 响应时间原本一直都很快 但在某个不经意的时间点 突然出现了接口超时 也许你会有点懵 到底是为什么呢 今天跟大家一起聊聊接口突然超时的10个原因 希望对你会有所帮助 1 网络异常
  • CSS高级用法

    收藏一些css的高级用法 1 黑白图像 这段代码会让你的彩色照片显示为黑白照片 1 2 3 4 5 6 7 img desaturate filter grayscale 100 webkit filter grayscale 100 mo
  • java出现圅_java获取汉字拼音首字母A

    public class GetChinessFirstSpell 汉字拼音首字母列表 本列表包含了20901个汉字 用于配合 GetChineseSpell 函数使用 本表收录的字符的Unicode编码范围为19968至40869 南京
  • mac移动硬盘未装载解决方案

    一 现象 外置移动硬盘桌面不显示 只在磁盘工具应用中置灰显示 坑爹的是你无法进行任何操作只能查看详细信息 二 尝试解决方法 1 尝试了很多修复工具也没有用 包括Tuxera 因为你压根没有装载成功谈何其它操作 2 尝试手动装载 卸载 1 使
  • IC新人必看:芯片设计流程最全讲解!

    对于消费者而言 一个可以使用的系统 有数字集成电路部分 模拟集成电路部分 系统软件及上层应用部分 关于各个部分的功能 借用IC 咖啡胡总的精品图可以一目了然 外部世界是一个模拟世界 故所有需要与外部世界接口的部分都需要模拟集成电路 模拟集成
  • Kafka 入门三问

    目录 1 Kafka 是什么 1 1 背景 1 2 定位 1 3 产生的原因 1 4 Kafka 有哪些特征 消息和批次 模式 主题和分区 生产者和消费者 broker 和 集群 1 5 Kafka 可以做什么 Kafka作为消息系统 Ka
  • java开发中手动设置logback、jvm、容器的时区

    一 Logback xml配置日志输出时区为东八区 1 在日志格式配置后添加 CTT 或 GMT 8
  • electron 调试、问题追踪

    文章目录 前言 一 调试工具 1 生产环境调试工具 bugtron 2 日志 1 业务日志 2 网络日志 3 崩溃报告 二 捕获全局异常 1 开发网页时 2 在electron中全局异常捕获 3 从异常中恢复 保护用户界面 总结 前言 开发
  • Unity-世界坐标与屏幕坐标

    transform position x和transform position y的值含义是世界坐标 世界坐标与屏幕坐标有时一样 有时不同 这和Canvas的渲染模式有关 Canvas共有三种渲染模式 Screen Space Overla
  • 预处理等等

    预处理 define 宏定义是个演技非常高超的替身演员 但也会经常耍大牌的 所以我们用它要慎之又慎 它可以出现在代码的任何地方 从本行宏定义开始 以后的代码就就都认识这个宏了 也可以把任何东西定义成宏 因为编译器会在预编译的时候用真身替换替
  • Qt浅谈之一:内存泄露

    一 简介 Qt内存管理机制 Qt 在内部能够维护对象的层次结构 对于可视元素 这种层次结构就是子组件与父组件的关系 对于非可视元素 则是一个对象与另一个对象的从属关系 在 Qt 中 在 Qt 中 删除父对象会将其子对象一起删除 C 中del
  • 目标检测算法中,COCO评价指标的解析

    与图像分类的评价指标有所不同 图像分类是在所有的图像中分类正确和错误的概率 而目标检测显然不能这样来 那怎样才算检测正确 1 loU大于指定阈值 2 类别正确 3 confidence大于指定阈值 其实这三点在COCO评价指标当中都会运用到
  • AsyncContext优雅实现HTTP长轮询接口

    一 背景 接到一个需求 实现方案时需要提供一个HTTP接口 接口需要hold住5 8秒 轮询查询数据库 一旦数据库中值有变化 取出变化的值进行处理 处理完成后返回响应 这不就是长轮询吗 如何优雅的实现呢 二 方案设计 在 Spring 中
  • Bean和Map转换的工具类

    Bean和Map转换的工具类 依赖包 基于Spring的cglib 实现 如果是Spring项目 可以不引入依赖