javabean(实体类)转Map类型

从网上“風亦飞”的导出EXCEL的源码提取出来的,觉得很好用,分享一下给大家,主要看beanToMap方法就OK了

/*下面是从poi导出EXCEL的一部分代码,主要将传参数的list转换为map类型,list装载的数据是从数据库取出来的,可以是数组类型,也可以是map类型,也可以是实体类*/

public static TableData createTableData(List list,TableHeaderMetaData headMeta,String[] fields){

        TableData td = new TableData(headMeta);
        TableDataRow row = null;
        if(list != null && list.size()>0){
         if(list.get(0).getClass().isArray()){//list为数组类型
                for (Object obj : list){
                 row = new TableDataRow(td);
              for(Object o : (Object[])obj){
         row.addCell(o);
        }
                    td.addRow(row);
                }
         }else{//JavaBean或Map类型
                for (Object obj : list){
                 row = new TableDataRow(td);
                 //判断是//JavaBean(实体类)还是Map类型 ,如果是javaBean将调用 obj:beanToMap,转为map类型
                 Map<String, Object> map = (obj instanceof Map)?(Map<String, Object>)obj:beanToMap(obj);

                    for(String key : fields){
                        row.addCell(map.get(key));
                    }
                    td.addRow(row);
                }
         }
        }
        return td;
}

//将javabean转为map类型,然后返回一个map类型的值
public static Map<String, Object> beanToMap(Object obj) {
        Map<String, Object> params = new HashMap<String, Object>(0);
        try {
            PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();
            PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(obj);
            for (int i = 0; i < descriptors.length; i++) {
                String name = descriptors[i].getName();
                if (!StringUtils.equals(name, "class")) {
                    params.put(name, propertyUtilsBean.getNestedProperty(obj, name));
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return params;
}

javabean(实体类)转Map类型

时间: 2024-12-17 00:04:52

javabean(实体类)转Map类型的相关文章

实体类与CDATA类型的xml的转换的工具类

package com.wanhua.util; import java.io.StringReader;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; import org.jdom.Document;import org.jdom.Element;import org.jdom.input.SAXBuilder;import org.xml.sax.

也说说复制实体类的值类型

/// <summary> /// 复制实体的值类型 /// </summary> /// <typeparam name="T">实体类</typeparam> /// <param name="obj">实体对象</param> /// <returns></returns> public static T GetActualEntity<T>(T obj

实体类中用基本类型好,还是用包装类型好?

如果您也考虑这个问题欢迎指正我的观点,如果您正在考虑这个问题,欢迎评论一起讨论一下这个问题 刚才又想到了关于module或者实体类的建立的问题,用基本类型(int,long)好主要是,还是用包装类型(Integer,Long)好? 在过去很长时间我都自己冥想这个问题,也问过同事,都没有得到满意的答案,综合最近的学习,再考虑一下这个问题. 首先,分析各自的优缺点 基本类型(int,long) 优点 a.用于计算是效率高(effective java书上讲过的) b.不会由于常量池引起比较大小错误(

实体类中用基本类型好,还是用包装类型

关于module或者实体类的建立的问题,用基本类型(int,long)好主要是,还是用包装类型(Integer,Long)好? 在过去很长时间我都自己冥想这个问题,也问过同事,都没有得到满意的答案,综合最近的学习,再考虑一下这个问题. 首先,分析各自的优缺点 基本类型(int,long) 优点 a.用于计算是效率高(effective java书上讲过的) b.不会由于常量池引起比较大小错误(例如java integer对象判断两个数字是否相等) 缺点 1.当数据库中查询出结果之后封装结果集时如

java中遍历实体类属性和类型

public static void testReflect(Object model) throws NoSuchMethodException, IllegalAccessException, IllegalArgumentException, InvocationTargetException{ Field[] field = model.getClass().getDeclaredFields(); //获取实体类的所有属性,返回Field数组 for(int j=0 ; j<field

javabean 实体类的转换

1. spring 工具类 BeanUtils.copyProperties 简单的实体类之间的转换,不能copy Date类型,利用java反射的原理来进行属性的复制.如果两个实体的类的里面嵌套实体类的类型不一样,copy后实体类的变为原实体类的类型,当在此使用目标实体类的时候会发生类型的转化异常.2. MapStruct是一个代码生成器的工具类,简化了不同的Java Bean之间映射的处理,所以映射指的就是从一个实体变化成一个实体.在实际项目中,我们经常会将PO转DTO.DTO转PO等一些实

SpringMVC中的返回值问题之三返回list类型和map类型

web.xml文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" > <web-app><display-name>Archetype Created Web Application</display-name> <

Java 中 Map与JavaBean实体类之间的相互转化

在做导入的时候,遇到了需要将map对象转化 成javabean的问题,也就是说,不清楚javabean的内部字段排列,只知道map的 key代表javabean的字段名,value代表值. 那现在就需要用转化工具了.是通用的哦! 首先来看 JavaBean 转化成Map的方法: /** * 将一个 JavaBean 对象转化为一个 Map * @param bean 要转化的JavaBean 对象 * @return 转化出来的 Map 对象 * @throws IntrospectionExc

自制工具:CSV代码生成器:自动生成CSV文件对应的C++实体类和字段类型解析代码

本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 更有开发效率地使用CSV文件 为了更有效率地使用CSV文件,我制作了一个工具:Code代码生成器. 这个工具可以对CSV文件进行简单地配置,自动生成这个CSV文件对应的C++数据结构和字段类型解析函数代码. 工程项目只要加入这些自动生成的代码,就可以更方便地使用来自CSV配置文件的数据. 用工具自动生代码,可以省去了手工编写.手工维护那些大量的.无聊繁琐的类型定义.数据转换的代码的过

Android Studio 插件 GsonFormat :你还在烦恼 为 Json格式 生成 JavaBean实体类吗?

在网络层,互联网提供所有应用程序都要使用的两种类型的服务,尽管目前理解这些服务的细节并不重要,但在所有TCP/IP概述中,都不能忽略他们: 无连接分组交付服务(Connectionless Packet Delivery Service) 无连接交付抽象地表示大多数分组交换网络都能提供的一种服务.简单地讲,指的是TCP/IP灰暗网按照报文上携带的地址信息把短报文从一台机器传递到另一台机制.因为无连接服务单独传递每个分组,所以不能保证可靠.有序地传递.而且,由于无连接服务通常直接映射到底层的硬件上