java操作mongodb時,對象bean和DBObject相互轉(zhuǎn)換的方法(推薦)
更新時間:2016年11月06日 19:27:25 投稿:jingxian
下面小編就為大家?guī)硪黄猨ava操作mongodb時,對象bean和DBObject相互轉(zhuǎn)換的方法(推薦)。小編覺得挺不錯的,現(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對象轉(zhuǎn)換成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(); // 獲取對象對應(yīng)類中的所有屬性域 Field[] fields = bean.getClass().getDeclaredFields(); for (Field field : fields) { // 獲取屬性名 String varName = field.getName(); // 修改訪問控制權(quán)限 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); } // 恢復(fù)訪問控制權(quán)限 field.setAccessible(accessFlag); } return dbObject; } /** * 把DBObject轉(zhuǎn)換成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相互轉(zhuǎn)換的方法(推薦)全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
spring cloud gateway網(wǎng)關(guān)路由分配代碼實例解析
這篇文章主要介紹了spring cloud gateway網(wǎng)關(guān)路由分配代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-01-01Java畢業(yè)設(shè)計實戰(zhàn)之健身俱樂部管理系統(tǒng)的實現(xiàn)
這是一個使用了java+SSM+Mysql+Jsp開發(fā)的健身俱樂部管理系統(tǒng),是一個畢業(yè)設(shè)計的實戰(zhàn)練習(xí),具有俱樂部管理該有的所有功能,感興趣的朋友快來看看吧2022-02-02springcloud項目占用內(nèi)存好幾個G導(dǎo)致服務(wù)器崩潰的問題
這篇文章主要介紹了springcloud項目占用內(nèi)存好幾個G導(dǎo)致服務(wù)器崩潰的問題,本文給大家分享解決方案供大家參考,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10使用Java實現(xiàn)接口攔截器來監(jiān)控接口的執(zhí)行情況
在排查問題的時候,由于沒有對接口的執(zhí)行情況,以及入?yún)⑦M行監(jiān)控,所以排查起問題就特別費勁,今天我們就一起來寫一個接口的攔截器來監(jiān)控接口的執(zhí)行情況吧2024-01-01