java操作mongodb时,对象bean和DBObject相互转换的方法(推荐)

 更新时间:2016年11月06日 19:27:25   投稿:jingxian  
下面小编就为大家带来一篇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; 
 } 
}

以上就是小编为大家带来的java操作mongodb时,对象bean和DBObject相互转换的方法(推荐)全部内容了,希望大家多多支持脚本之家~

相关文章

  • MyBatis-Plus 插件扩展的实现

    MyBatis-Plus 插件扩展的实现

    MyBatis-Plus通过插件扩展机制增强功能,基于MyBatis Interceptor拦截器,包括分页插件、逻辑删除、SQL性能分析和乐观锁等,开发者可自定义插件以适应特定需求,有效地增强SQL执行过程的控制和优化,同时注意插件使用的性能影响和执行顺序
    2024-09-09
  • 浅谈三分钟学习Java泛型中T、E、K、V、?的含义

    浅谈三分钟学习Java泛型中T、E、K、V、?的含义

    这篇文章主要介绍了浅谈三分钟学习Java泛型中T、E、K、V、?的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java中@JSONField和@JsonProperty注解的用法及区别详解

    Java中@JSONField和@JsonProperty注解的用法及区别详解

    @JsonProperty和@JSONField注解都是为了解决obj转json字符串的时候,将java bean的属性名替换成目标属性名,下面这篇文章主要给大家介绍了关于Java中@JSONField和@JsonProperty注解的用法及区别的相关资料,需要的朋友可以参考下
    2024-06-06
  • SpringMVC中Invalid bound statement (not found)常见报错问题解决

    SpringMVC中Invalid bound statement (not f

    本文主要介绍了SpringMVC中Invalid bound statement (not found)常见报错问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • 解决idea中maven项目无端显示404错误的方法

    解决idea中maven项目无端显示404错误的方法

    这篇文章主要介绍了解决idea中maven项目无端显示404错误的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • Spring Cache使用RedisCache案例解析

    Spring Cache使用RedisCache案例解析

    这篇文章主要介绍了Spring Cache使用RedisCache案例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 如何在IDEA中对 hashCode()和 equals() 利用快捷键快速进行方法重写

    如何在IDEA中对 hashCode()和 equals() 利用快捷键快速进行方法重写

    这篇文章主要介绍了如何在IDEA中对 hashCode()和 equals() 利用快捷键快速进行方法重写,需要的朋友可以参考下
    2020-08-08
  • springboot上传文件并返回url过程

    springboot上传文件并返回url过程

    这篇文章主要介绍了springboot上传文件并返回url过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Servlet第一个项目的发布(入门)

    Servlet第一个项目的发布(入门)

    这篇文章主要介绍了Servlet第一个项目的发布,下面是用servlet实现的一个简单的web项目,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-04-04
  • Java的wait(), notify()和notifyAll()使用心得

    Java的wait(), notify()和notifyAll()使用心得

    本篇文章是对java的 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下
    2013-08-08

最新评论