首页 > 编程语言 >java 实体类Bean与Map互相转化

java 实体类Bean与Map互相转化

时间:2023-02-15 11:07:48浏览次数:47  
标签:Map 实体类 return hashMap map -- Bean

 

1.情景展示

  java对象与Map之间进行相互转换,如何实现?   

2.分析

  通过org.apache.commons.beanutils.BeanUtils类来实现

  所需jar包

<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.8.0</version>
<scope>compile</scope>
</dependency>

3.代码实现

  Java对象转Map

/*
* Java对象转Map
* @attention: 实体类的属性必须有对应的get()方法
* @date: 2020年11月20日 0020 10:43
* @param: bean Java对象
* @return: java.util.Map<java.lang.String,java.lang.Object>
*/
public static Map<String, Object> fromJavaBean(Object bean) {
if (null == bean) return null;

try {
Map<String, Object> map = BeanUtils.describe(bean);
// 移除key=class
map.remove("class");
log.debug("JavaBean-->Map转换前:" + bean.toString());
log.debug("JavaBean-->Map转换后:" + map);
return map;
} catch (Exception e) {
log.error("JavaBean-->Map转换失败:" + e.getMessage());
e.printStackTrace();
return null;
}
}

  说明: 首字母大写有可能会存在被强转成小写的可能,比如:X509->x509

  Map转Java对象

/*
* Map转java对象
* @attention: 实体类不能使用lombok注解@Accessors(chain = true),否则将会赋值失败
* 实体类的属性必须有对应的set()方法
* @date: 2020年11月20日 0020 10:53
* @param: clazz java类
* @param: map 待转换
* @return: T
*/
public static <T> T toJavaBean(Class<?> clazz, Map map) {
try {
T newBeanInstance = (T) clazz.newInstance();
BeanUtils.populate(newBeanInstance, map);
log.debug("Map-->JavaBean转换前:" + map);
log.debug("Map-->JavaBean转换后:" + newBeanInstance.toString());
return newBeanInstance;
} catch (Exception e) {
log.error("Map-->JavaBean转换失败:" + e.getMessage());
e.printStackTrace();
return null;
}
}

4.测试    

java 实体类Bean与Map互相转化_java

public static void main(String[] args) {
Map<String, Object> hashMap = new HashMap<>(5);
hashMap.put("name", "Marydon");
hashMap.put("sex", "男");
hashMap.put("age", 18);
hashMap.put("address", "深圳");
hashMap.put("company", "创业");

// map转实体类
People people = MapUtils.toJavaBean(People.class,hashMap);

// 实体类转map
Map map = MapUtils.fromJavaBean(people);

// 打印执行结果
System.out.println(people.toString());
System.out.println(map);
}

java 实体类Bean与Map互相转化_实体类_02

 

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 作者:​​Marydon​​


标签:Map,实体类,return,hashMap,map,--,Bean
From: https://blog.51cto.com/u_15964717/6058734

相关文章

  • SringBoot batch 出现Bean property '*_*' is not readable or has an invalid getter
    使用SpringBootbatch将msyql数据以csv格式输出,出现:  解决方法,添加另一种格式get、set方法(created_by是我的mysql一张表的字段名): ......
  • maptalks使用canvas自定义图标
    背景起因是ui设计了一版页面,其中标注类似下图,看到这个设计图,一时半会在api没有设置,咨询maptalks技术群里大佬后,决定用canvas绘制一个图标原理主要是用利用canvas里arct......
  • Poj 2503 map sscanf
    Poj2503mapsscanf题意字符串的映射,但它输入的方式很怪。首先每行输入两个单词,中间隔一个空格,到输入空行为止。然后每行输入一个单词,如果能存在映射的单词就输出对......
  • Java报错:Failed to start bean ‘documentationPluginsBootstrapper‘
    场景描述SpringBoot引入knife4j+Swagger报错Failedtostartbean'documentationPluginsBootstrapper'引入版本<parent> <groupId>org.springframework.boot</grou......
  • 4、Map接口
    1、Map接口实现类的特点【很实用】这里讲的是JDK8的Map接口特点Map_.javaMap与Collection并列存在,用于保存具有映射关系的数据:Key-Value(双列元素)Map中的key......
  • hashMap的底层数据结构
    本节用于记录JavaHashMap底层数据结构、方法实现原理等,基于JDK1.8。#底层数据结构JavahashMap是采用哈希表结构的(数组+链表/jdk8后加入红黑树)实现,结合了数组和链表......
  • pandas里使用map函数并且是自定义函数来实现规则的方式def
      现在我的问题是,有一堆数据,用一些字符串开头,然后换成数字  原本我用的死办法,直接先做字典,然后用字典的内容作为map的映射规则但是由于这些字符太多了,做字典很......
  • @Bean注解和@Resource注解的用法作用
    今天学习Hikari资源池,想对资源池的一些参数进行监听时,不知道使用什么方法,然后查阅资料得知通过创建配置类,在配置类里对HikariDataSource进行初始化,通过@Bean创建bean交给sp......
  • Spring的FactoryBean接口探秘
    今天接触到一个新项目,杰夫接口对外暴露一个接口:<!--发布服务alias可以改成自己的--><jsf:providerid="puDaoDataService"interface="com.jd.jrdp.exts.server.PuDao......
  • ES中mapping参数-analyzer
    转:https://blog.csdn.net/u011250186/article/details/1257043641简介把输入的文本块按照一定的策略进行分解,并建立倒排索引。在Lucene的架构中,这个过程由分析器(an......