MongoDB中bean与DBObject之间的转换

来源:互联网 发布:steam淘宝买游戏怎么搞 编辑:程序博客网 时间:2024/04/29 16:18
  1. import java.lang.reflect.Field;  
  2. import java.lang.reflect.InvocationTargetException;  
  3. import java.util.Date;  
  4.   
  5. import org.apache.commons.beanutils.BeanUtils;  
  6.   
  7. import com.mongodb.BasicDBObject;  
  8. import com.mongodb.DBObject;  
  9.   
  10. public class BeanUtil {  
  11.   
  12.   /** 
  13.    * 把实体bean对象转换成DBObject 
  14.    * @param bean 
  15.    * @return 
  16.    * @throws IllegalArgumentException 
  17.    * @throws IllegalAccessException 
  18.    */  
  19.   public static <T> DBObject bean2DBObject(T bean) throws IllegalArgumentException,  
  20.       IllegalAccessException {  
  21.     if (bean == null) {  
  22.       return null;  
  23.     }  
  24.     DBObject dbObject = new BasicDBObject();  
  25.     // 获取对象对应类中的所有属性域  
  26.     Field[] fields = bean.getClass().getDeclaredFields();  
  27.     for (Field field : fields) {  
  28.       // 获取属性名  
  29.       String varName = field.getName();  
  30.       // 修改访问控制权限  
  31.       boolean accessFlag = field.isAccessible();  
  32.       if (!accessFlag) {  
  33.         field.setAccessible(true);  
  34.       }  
  35.       Object param = field.get(bean);  
  36.       if (param == null) {  
  37.         continue;  
  38.       } else if (param instanceof Integer) {//判断变量的类型  
  39.         int value = ((Integer) param).intValue();  
  40.         dbObject.put(varName, value);  
  41.       } else if (param instanceof String) {  
  42.         String value = (String) param;  
  43.         dbObject.put(varName, value);  
  44.       } else if (param instanceof Double) {  
  45.         double value = ((Double) param).doubleValue();  
  46.         dbObject.put(varName, value);  
  47.       } else if (param instanceof Float) {  
  48.         float value = ((Float) param).floatValue();  
  49.         dbObject.put(varName, value);  
  50.       } else if (param instanceof Long) {  
  51.         long value = ((Long) param).longValue();  
  52.         dbObject.put(varName, value);  
  53.       } else if (param instanceof Boolean) {  
  54.         boolean value = ((Boolean) param).booleanValue();  
  55.         dbObject.put(varName, value);  
  56.       } else if (param instanceof Date) {  
  57.         Date value = (Date) param;  
  58.         dbObject.put(varName, value);  
  59.       }  
  60.       // 恢复访问控制权限  
  61.       field.setAccessible(accessFlag);  
  62.     }  
  63.     return dbObject;  
  64.   }  
  65.   
  66.   /** 
  67.    * 把DBObject转换成bean对象 
  68.    * @param dbObject 
  69.    * @param bean 
  70.    * @return 
  71.    * @throws IllegalAccessException 
  72.    * @throws InvocationTargetException 
  73.    * @throws NoSuchMethodException 
  74.    */  
  75.   public static <T> T dbObject2Bean(DBObject dbObject, T bean) throws IllegalAccessException,  
  76.       InvocationTargetException, NoSuchMethodException {  
  77.     if (bean == null) {  
  78.       return null;  
  79.     }  
  80.     Field[] fields = bean.getClass().getDeclaredFields();  
  81.     for (Field field : fields) {  
  82.       String varName = field.getName();  
  83.       Object object = dbObject.get(varName);  
  84.       if (object != null) {  
  85.         BeanUtils.setProperty(bean, varName, object);  
  86.       }  
  87.     }  
  88.     return bean;  
  89.   }  
  90. }  
0 0