Java数据类型(集合)转换(通用实现)

根据传入的Class自动将HashMap数据转换成对应的数据类型,该功能注意针对项目中存在大量的数据页面,并且他们的展示方式相似,采用该方法,我们只需要写一个通用的方法,不用的数据页面只需在Enum类进行相应的配置,即可实现数据查询功能。

功能代码如下:

1.写一个通用的sql查询 例如

2.调用该转换方法,方法参数传入的参数共有两个, 第一个为你需要转换的类,第二个为你查出来的数据 

public static List getListDate(Class clazz,List> data) throws IllegalAccessException, InstantiationException, IntrospectionException, InvocationTargetException {
        List datas = new ArrayList<>();
        for (HashMap datum : data) {
            Object instance = clazz.newInstance();
            Set> entries = datum.entrySet();
            List fields = getAllField(clazz);
            for (Field field : fields) {
                /*boolean flg = true;*/
                PropertyDescriptor pd = new PropertyDescriptor(field.getName(),clazz);
                Class type = field.getType();
                for (Map.Entry entry : entries) {
                    String[] split = entry.getKey().split("_");
                    StringBuilder name = new StringBuilder();
                    for (int i = 0; i < split.length; i++) {
                        if (i==0){
                            name.append(split[i]);
                        }else {
                            String replace = (new StringBuilder()).append(Character.toUpperCase(split[i].charAt(0))).append(split[i].substring(1)).toString();
                            name.append(replace);

                        }
                    }
                    if (field.getName().equals(name.toString())){
                        String value = datum.get(entry.getKey())+"";
                      /*  flg = false;*/
                        if ("Integer".equals(type.getSimpleName())){
                            pd.getWriteMethod().invoke(instance,Integer.parseInt (SeageUtils.isEmpty(value)? "0":value));
                        }else if ("Double".equals(type.getSimpleName())){
                            pd.getWriteMethod().invoke(instance,Double.parseDouble(SeageUtils.isEmpty(value)? "0.0":value));
                        }else {
                            pd.getWriteMethod().invoke(instance, (SeageUtils.isEmpty (value)?"":value));
                        }
                    }
                }
            }
            datas.add(instance);
        }
        return datas;
    } 
  

3.用对应的返回类型集合进行方法的接收。

你可能感兴趣的:(java)