zoukankan      html  css  js  c++  java
  • Ogbect对象转换为泛型对象

    相信很多人都自己写个这个转换的方法,再次附上我自己的写转换方法仅供参考。

    T t = BeanUtil.dbObject2Bean(obj, tClass);
     1 public static <T> T dbObject2Bean(DBObject dbObject, Class<T> clazz) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException, InstantiationException {
     2 
     3         Object ot =  Class.forName(clazz.getName()).newInstance();
     4         Method[] methods = clazz.getMethods();
     5         Field[] fields = clazz.getDeclaredFields();
     6 
     7         for (Field field : fields) {
     8             String varName = field.getName();
     9             if("serialVersionUID".equals(varName) || "_id".equals(varName)){
    10                 continue;
    11             }
    12             org.springframework.data.mongodb.core.mapping.Field annotation = field.getAnnotation(org.springframework.data.mongodb.core.mapping.Field.class);
    13             String fieldName = annotation.value();
    14             Object object = dbObject.get(fieldName);
    15 
    16             // 为对象赋值
    17             for (int j = 0; j < methods.length; j++) {
    18                 String methodName = methods[j].getName();
    19                 if (matchFieldAndSet(fieldName, methodName)) {
    20                     methods[j].invoke(ot, object);
    21                     break;
    22                 }
    23             }
    24         }
    25         return (T) ot;
    26     }
    View Code
    private static boolean matchFieldAndSet(String field, String name) {
    if (name.toLowerCase().matches("set" + field.toLowerCase())) {
    return true;
    } else {
    return false;
    }
    }

    就这这样简单的代码:转换50000条数据,在自己电脑上转换的时候耗时:7s

    下面换上apache的转换方法,耗时变成了2s。
    其实强大的apache就写好了一个转换方法,看了半天,看得有点迷糊,有兴趣的同学可以自己去研究一下。代码如下:
    用他写的代码,减少遍历,优化了转换时间。也可以看看我写的,有什么改进的可以相互学习。谢谢!!!

    T t = BeanUtil.convert(obj, tClass);
    public static <T> T convert(DBObject dbObject, Class<T> clazz) {
    return (T) org.apache.commons.beanutils.ConvertUtils.convert(dbObject, clazz);
    }

    著作权归个人所有,麻烦同志们别乱复制粘贴发表。
    为净化网络资源做贡献。谢谢!

  • 相关阅读:
    PS 给天空添加蓝天白云<转载>
    Study 8 —— 行块元素及定位
    Study 7 —— CSS美化背景和边框
    Study 6 —— 字体和段落属性
    Study 5 —— CSS概述
    Study 4 —— 表单标签
    Study 3 —— 表格
    Study 2 —— 图片热点区域
    Study 1 —— HTML5概述
    CentOS6.x下,tomcat
  • 原文地址:https://www.cnblogs.com/xiaoyongsz/p/6555873.html
Copyright © 2011-2022 走看看