在官网上下载mongodb的java驱动包, 把它加入到我们java程序的classpath里面,就可以开发了。
Mongo mongoInstance = new Mongo("localhost");
DB dbinstance=mongoInstance.getDB("mydb");
localhost表示的是我们连接到的服务器是本机。
mydb则表示我们连接的数据库名称,如果服务器上没有这个数据库,这时候会自动创建一个。
mongodb数据库内的下一级组成不叫表,而叫集合,collection。
所以我们可以打开一个集合:
DBCollection coll = dbinstance.getCollection(“test_bean”);
好,现在我们有一个java bean,我们如何把它存进去呢?
首先我们要把这个java bean转换成mongodb操作用的类型:DBObject,它是一个接口,而BasicDBObject类实现了它,所以我们把java bean转换成BasicDBObject:
/**
* 从一般的JavaBean生成一个DBObject
*
* @param obj对象
* @return DBObject
*/
public static BasicDBObject getDBObjFromJavaBean(Object obj) {
BasicDBObject doc = new BasicDBObject();
Method[] methodList = obj.getClass().getDeclaredMethods();
String key;
Map<String, Integer> keyMap = new HashMap<String, Integer>();
for (Method m : methodList) {
if (m.getName().startsWith("get") || m.getName().startsWith("set")) {
key = HealthRecordUtils.getPropertyName(m.getName());
if (!keyMap.containsKey(key))
keyMap.put(key, 1);
else
keyMap.put(key, keyMap.get(key) + 1);
}
}
for (Method m : methodList) {
try {
if (m.getName().startsWith("get")) {
key = HealthRecordUtils.getPropertyName(m.getName());
if (keyMap.get(key) == 2) {
doc.put(key, m.invoke(obj));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
return doc;
}
以上代码利用了反射,只有同时有get和set方法的属性才能被映射到形成的BasicDBObject里面去。
目前这个只适用于基本类型的属性。
然后我们就可以保存这个对象了:
coll.save(getDBObjFromJavaBean(javabean));