zoukankan      html  css  js  c++  java
  • java操作mongodb时,对象bean和DBObject相互转换的方法

    package com.iqbon.spider.util;  
      
    import java.lang.reflect.Field;  
    import java.lang.reflect.InvocationTargetException;  
    import java.util.Date;  
      
    import org.apache.commons.beanutils.BeanUtils;  
      
    import com.mongodb.BasicDBObject;  
    import com.mongodb.DBObject;  
      
    public class BeanUtil {  
      
      /** 
       * 把实体bean对象转换成DBObject 
       * @param bean 
       * @return 
       * @throws IllegalArgumentException 
       * @throws IllegalAccessException 
       */  
      public static <T> DBObject bean2DBObject(T bean) throws IllegalArgumentException,  
          IllegalAccessException {  
        if (bean == null) {  
          return null;  
        }  
        DBObject dbObject = new BasicDBObject();  
        // 获取对象对应类中的所有属性域  
        Field[] fields = bean.getClass().getDeclaredFields();  
        for (Field field : fields) {  
          // 获取属性名  
          String varName = field.getName();  
          // 修改访问控制权限  
          boolean accessFlag = field.isAccessible();  
          if (!accessFlag) {  
            field.setAccessible(true);  
          }  
          Object param = field.get(bean);  
          if (param == null) {  
            continue;  
          } else if (param instanceof Integer) {//判断变量的类型  
            int value = ((Integer) param).intValue();  
            dbObject.put(varName, value);  
          } else if (param instanceof String) {  
            String value = (String) param;  
            dbObject.put(varName, value);  
          } else if (param instanceof Double) {  
            double value = ((Double) param).doubleValue();  
            dbObject.put(varName, value);  
          } else if (param instanceof Float) {  
            float value = ((Float) param).floatValue();  
            dbObject.put(varName, value);  
          } else if (param instanceof Long) {  
            long value = ((Long) param).longValue();  
            dbObject.put(varName, value);  
          } else if (param instanceof Boolean) {  
            boolean value = ((Boolean) param).booleanValue();  
            dbObject.put(varName, value);  
          } else if (param instanceof Date) {  
            Date value = (Date) param;  
            dbObject.put(varName, value);  
          }  
          // 恢复访问控制权限  
          field.setAccessible(accessFlag);  
        }  
        return dbObject;  
      }  
      
      /** 
       * 把DBObject转换成bean对象 
       * @param dbObject 
       * @param bean 
       * @return 
       * @throws IllegalAccessException 
       * @throws InvocationTargetException 
       * @throws NoSuchMethodException 
       */  
      public static <T> T dbObject2Bean(DBObject dbObject, T bean) throws IllegalAccessException,  
          InvocationTargetException, NoSuchMethodException {  
        if (bean == null) {  
          return null;  
        }  
        Field[] fields = bean.getClass().getDeclaredFields();  
        for (Field field : fields) {  
          String varName = field.getName();  
          Object object = dbObject.get(varName);  
          if (object != null) {  
            BeanUtils.setProperty(bean, varName, object);  
          }  
        }  
        return bean;  
      }  
    } 

    出自:http://iqbon.iteye.com/blog/1756118

  • 相关阅读:
    [Micropython]发光二极管制作炫彩跑马灯
    如何在MicroPython TPYBoard 添加自定义类库
    micropython TPYBoard v202 超声波测距
    简易排水简车的制作 TurnipBit 系列教程
    TPYBoard v102 驱动28BYJ-48步进电机
    使用mksdcard管理虚拟SD卡
    使用 DX 编译 Android应用
    常用ADB的用法
    在命令行创建、删除和浏览AVD、使用android模拟器
    Android-SDK下目录结构
  • 原文地址:https://www.cnblogs.com/azhqiang/p/5591623.html
Copyright © 2011-2022 走看看