java实体对象与Map之间的转换工具类代码实例

 更新时间:2019年12月26日 09:49:34   作者:小破孩楼主  
这篇文章主要介绍了java实体对象与Map之间的转换工具类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

这篇文章主要介绍了java实体对象与Map之间的转换工具类代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Map接口中键和值一一映射. 可以通过键来获取值。

  • 给定一个键和一个值,你可以将该值存储在一个Map对象. 之后,你可以通过键来访问对应的值。
  • 当访问的值不存在的时候,方法就会抛出一个NoSuchElementException异常.
  • 当对象的类型和Map里元素类型不兼容的时候,就会抛出一个 ClassCastException异常。
  • 当在不允许使用Null对象的Map中使用Null对象,会抛出一个NullPointerException 异常。
  • 当尝试修改一个只读的Map时,会抛出一个UnsupportedOperationException异常。

代码如下

import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
 
public class EntityUtils {
  /**
   * 实体类转Map
   * @param object
   * @return
   */
  public static Map<String, Object> entityToMap(Object object) {
    Map<String, Object> map = new HashMap();
    for (Field field : object.getClass().getDeclaredFields()){
      try {
        boolean flag = field.isAccessible();
        field.setAccessible(true);
        Object o = field.get(object);
        map.put(field.getName(), o);
        field.setAccessible(flag);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
    return map;
  }
  
  /**
   * Map转实体类
   * @param map 需要初始化的数据,key字段必须与实体类的成员名字一样,否则赋值为空
   * @param entity 需要转化成的实体类
   * @return
   */
  public static <T> T mapToEntity(Map<String, Object> map, Class<T> entity) {
    T t = null;
    try {
      t = entity.newInstance();
      for(Field field : entity.getDeclaredFields()) {
        if (map.containsKey(field.getName())) {
          boolean flag = field.isAccessible();
          field.setAccessible(true);
          Object object = map.get(field.getName());
          if (object!= null && field.getType().isAssignableFrom(object.getClass())) {
             field.set(t, object);
          }
          field.setAccessible(flag);
        }
      }
      return t;
    } catch (InstantiationException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    return t;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • NetBeans安装提示neatbeans cannot find java 1.8 or higher

    NetBeans安装提示neatbeans cannot find java 1.8 or higher

    今天小编就为大家分享一篇关于NetBeans安装提示neatbeans cannot find java 1.8 or higher,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • mybatis plus 的动态表名的配置详解

    mybatis plus 的动态表名的配置详解

    这篇文章主要介绍了mybatis plus 的动态表名的配置详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • MapStruct到底是什么?

    MapStruct到底是什么?

    今天给大家带来的是关于Java的相关知识,文中围绕MapStruct到底是什么展开,文中有非常详细的解释及代码示例,需要的朋友可以参考下
    2021-06-06
  • SpringBoot整合Netty心跳机制过程详解

    SpringBoot整合Netty心跳机制过程详解

    这篇文章主要介绍了SpringBoot整合Netty心跳机制过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • BMIDE环境导入项目报编码错误解决方案

    BMIDE环境导入项目报编码错误解决方案

    这篇文章主要介绍了BMIDE环境导入项目报编码错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • servlet实现图片上传功能

    servlet实现图片上传功能

    这篇文章主要为大家详细介绍了servlet实现图片的上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Java多线程之ReentrantReadWriteLock源码解析

    Java多线程之ReentrantReadWriteLock源码解析

    这篇文章主要介绍了Java多线程之ReentrantReadWriteLock源码解析,文中有非常详细的代码示例,对正在学习java基础的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Mybatis分页的实现及使用注解开发操作

    Mybatis分页的实现及使用注解开发操作

    这篇文章主要介绍了Mybatis分页的实现及使用注解开发操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • SpringBoot将所有依赖(包括本地jar包)打包到项目

    SpringBoot将所有依赖(包括本地jar包)打包到项目

    这篇文章主要介绍了SpringBoot将所有依赖(包括本地jar包)打包到项目,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • java全角与半角标点符号相互转换详解

    java全角与半角标点符号相互转换详解

    这篇文章主要为大家介绍了java全角与半角标点符号相互转换详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03

最新评论