java操作mongodb时,对象bean和DBObject相互转换的方法
2024-10-01 08:04:38
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
最新文章
- javascript高性能编程-算法和流程控制
- animation-timing-function: steps() 详解
- 将GridView数据导入到excel,并提供下载
- ZKUI中文编码以及以docker方式运行的问题
- android XMl 解析神奇xstream 五: 把复杂对象转换成 xml ,并写入SD卡中的xml文件
- source insight 支持CC 文件
- Linux中的栈:用户态栈/内核栈/中断栈
- js stringObject的indexOf方法
- 201521123031 《Java程序设计》第9周学习总结
- 【转】javascript 分号问题
- python学习日记(面向对象——继承)
- centos7初上手1-安装mysql数据库
- ubuntu 16.04 和win10双系统ubuntu无法更新问题解决
- nuxt项目部署
- Shell的Posix字符分类
- 用 ArrayList 集合调用商品类
- Spring-Boot构建多模块项目
- Monotonic Array LT896
- 【Linux高级驱动】平台设备驱动机制的编程流程与编译进内核
- npm使用国内淘宝镜像的方法