java操作mongodb時,對象bean和DBObject相互轉換的方法(推薦)
更新時間:2016年11月06日 19:27:25 投稿:jingxian
下面小編就為大家?guī)硪黄猨ava操作mongodb時,對象bean和DBObject相互轉換的方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
如下所示:
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;
}
}
以上就是小編為大家?guī)淼膉ava操作mongodb時,對象bean和DBObject相互轉換的方法(推薦)全部內容了,希望大家多多支持腳本之家~
相關文章
使用Spring Data Redis實現(xiàn)數據緩存的方法
目前在系統(tǒng)架構設計中使用Redis實現(xiàn)緩存,這篇文章主要介紹了使用Spring Data Redis實現(xiàn)數據緩存的方法,具有一定的參考價值,需要的朋友可以參考下2018-11-11
Springboot 整合 Dubbo/ZooKeeper 實現(xiàn) SOA 案例解析
這篇文章主要介紹了Springboot 整合 Dubbo/ZooKeeper 詳解 SOA 案例,需要的朋友可以參考下2017-11-11
如何使用Spring Boot ApplicationRunner解析命令行中的參數
這篇文章主要介紹了使用Spring Boot ApplicationRunner解析命令行中的參數,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2018-12-12

