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;
}
}
分享到:
相关推荐
将DBObject转换为Java对象Bean,通常可以使用Apache Commons BeanUtils库。这个库提供了一种方便的方法,通过反射机制将属性值从DBObject填充到Java对象中。以下是一个简单的转换方法: ```java import org.apache....
ORM 部分将 C++ 类映射到 SQL 数据库中的表: 数据库C++ 桌子班级柱子class' 属性(或 setter/getter 方法) 排类实例SQL 编写器帮助程序允许您在本机 C++ 中编写和执行 SQL 查询,该查询在编译时经过语法验证。...
数据库第三方操作类,封装了打开和关闭数据库连接
在Java编程语言中,`equals()`, `hashCode()` 和 `toString()` 是三个非常重要的方法,它们主要用于对象的比较、哈希存储以及打印对象信息。这三个方法是Java对象的基础特性,对于理解和开发高质量的Java程序至关...
在查询时,结果会自动转换为`DBObject`,可以通过`setObjectClass()`方法将其转换回原生类型,如`Tweet`。 创建MongoDB连接非常直观,只需调用`new Mongo()`或指定服务器和端口`new Mongo("localhost", 27017)`。每...
7. **JSON.parse**:在将JSON字符串转换为`DBObject`时,使用了`JSON.parse(jsonSql)`方法。这是MongoDB驱动程序的一部分,将JSON字符串解析为可以执行的MongoDB命令对象。 8. **DBObject**:`DBObject`是MongoDB...
"MongoDB 使用 MongoTemplate 实现统计和分组" MongoDB 是一个非常流行的 NoSQL 数据库,它可以存储大量的数据,但是有时候我们需要对这些数据进行分析和利用。在本文中,我们将介绍如何使用 MongoTemplate 实现...
创建一个`Map`对象,将数据放入其中,然后将其转换为`DBObject`: ```java Map, String> data = new HashMap(); data.put("key", "value"); DBObject dbObject = new BasicDBObject(data); DBCollection dbcol = ...
在Java中操作几何体主要涉及Oracle Spatial Java API...这些工具和API使得开发者能够轻松地在Java应用程序中处理与空间数据相关的操作,包括读取、写入、转换和检查几何体对象,从而实现对地理信息系统的高级功能支持。
使用`DbObject.ObjectType`属性确定对象的类型,然后可以使用`Cast<T>`方法将`DbObject`转换为其实际类型。 12. **实体对象的属性**: 实体对象如线、圆等,都有各自的属性,如线的长度、圆的半径等,可以通过...
PHP5的框架,可以自动创建映射数据库的类,并创建获取相关对象的方法。 不要再编写getter或setter的代码! 想象一下:$ client =&Client :: factory(4)...,而不必编写Client类。
在使用MongoDB进行Java开发时,首先需要导入如`Mongo`, `DB`, `DBCollection`, `BasicDBObject`, `DBObject`, `DBCursor` 和 `ObjectId`等核心类。这些类分别代表MongoDB连接、数据库、集合、基本的文档对象、任意...
其丰富的类库和方法使开发者能够快速构建和管理复杂的Web应用。无论是广告的显示、数据的增删改查,还是模板的动态渲染,jmzPHP都提供了相应的工具和支持,帮助开发者更好地应对各种场景下的开发需求。
- **方法3**:通过`HashMap`转换为`BasicDBObject`。 ```java Map, Object> data1 = new HashMap(); data1.put("key1", value1); // 添加其他字段... users.insert(new BasicDBObject(data1)); ``` - **方法...
- Morphia 提供了将对象转换为 JSON 和从 JSON 反序列化的功能,可以方便地与 JSON 文档交互。 - 使用 `JSON.serialize()` 方法将 `DBObject` 或 Java 对象序列化为 JSON 字符串。 7. **异常处理** - 在实际操作...
在上面的示例代码中,我们定义了三个方法:setObjData、setListData和insertToCol。setObjData方法用于插入单个文档,setListData方法用于插入多个文档,而insertToCol方法用于插入文档到指定的集合中。 在...
- `put()`方法:在插入数据时,如果字段名包含点号,该方法会递归地创建嵌套的DBObject结构,然后将值放入正确的位置。 - `get()`方法:在查询数据时,方法会根据点号分隔的字段名,逐层遍历DBObject,获取嵌套结构...
这个API包含了大量的类和方法,可以创建、修改、读取和管理DWG或DXF文件,这些都是CAD图纸的标准格式。 在实际的代码实现中,通常会涉及到以下几个关键步骤: 1. **启动CAD实例**:通过`AcadApplication`类的静态...
从数据库中查询对象时,可以通过设置 `DBObject` 类型来转换查询结果: ```java collection.setObjectClass(Tweet.class); Tweet myTweet = (Tweet) collection.findOne(); ``` #### 三、创建连接 建立与 MongoDB...