Java操作Mongodb 保存/读取java对象到/从mongodb

Mongodb官方提供的Java驱动,保存与读取,需要的者是DBObject对象,这是一个接口,实现put,get等方法,跟map类似,如果我们要直接把普通的java对象保存到mongodb,就需要先转换成DBObject对象,或者直接实现DBObject接口,操作起来相当复杂。还好,monodb驱动带了把json转换成DBObject对象的功能,加上Google的Gson,就可以实现把普通的对象保存到mongodb中。如果要从mogodb中读出对象,反过来操作即可,但有一点需要注意的是,mongodb的文档没有固定的字段,所以用Gson转换,可能因为各个文档属性不同,转出的对象属性都是空的,要确保在插入时都是插入同一个类的对象。
下面的例子是把User对象插入到Mongodb中,并读出来
User.java:

package com.mongo;

public class User {
 String name;
 int age;
 Oid _id;
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getAge() {
  return age;
 }
 public void setAge(int age) {
  this.age = age;
 }
 /**
  * Mongodb会自动生成ObjectId
  * @author fhp
  *
  */
 public class Oid{
  String $oid;
  public String get$oid() {
   return $oid;
  }

  public void set$oid(String $oid) {
   this.$oid = $oid;
  }

 }
}

Main.java:

package com.mongo;

import java.net.UnknownHostException;

import com.google.gson.Gson;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient;
import com.mongodb.util.JSON;

public class Main {

 /**
  * @param args
  * @throws UnknownHostException
  */
 public static void main(String[] args) throws UnknownHostException {
  // TODO Auto-generated method stub
     MongoClient mongoClient = new MongoClient();

     DB psdoc = mongoClient.getDB("psdoc");
     DBCollection user=psdoc.getCollection("user");

     User u1=new User();
     u1.setAge(20);
     u1.setName("ssss");
     Gson gson=new Gson();
     //转换成json字符串,再转换成DBObject对象
     DBObject dbObject = (DBObject) JSON.parse(gson.toJson(u1));
     //插入数据库
     user.insert(dbObject);

     DBCursor cursor=user.find();
     while(cursor.hasNext())
     {
      DBObject obj=cursor.next();
      //反转
      User u=gson.fromJson(obj.toString(), User.class);
      System.out.println(u.name);
     }
 }

}

为了方便,可以直接把Gson整合进驱动里,直接修改驱动的源代码
com.mongodb.DBCollection.java:
新增方法:

/**
  * 把普通的对象写入数据库
  *
  * @param obj
  * @return
  */
 public WriteResult insert(Object obj) {
  Gson gson = new Gson();
  DBObject dbObject = (DBObject) JSON.parse(gson.toJson(obj));
  gson=null;
  return insert(dbObject);
 }

com.mongodb.DBCursor.java:

新增方法

 /**
     * 从数据库读出对象
     * @param obj
     * @param clazz
     * @return
     */
    public <T> T nextObj(Class<T> clazz) {
        _checkType( CursorType.ITERATOR );
        Gson gson=new Gson();
        T u=gson.fromJson(_next().toString(), clazz);
gson=null;
        return u;
    }

修改后的调用方法:

Main.java:

package com.mongo;

import java.net.UnknownHostException;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.MongoClient;

public class Main {

 /**
  * @param args
  * @throws UnknownHostException
  */
 public static void main(String[] args) throws UnknownHostException {
  // TODO Auto-generated method stub
     MongoClient mongoClient = new MongoClient();

     DB psdoc = mongoClient.getDB("psdoc");
     DBCollection user=psdoc.getCollection("user");

     User u1=new User();
     u1.setAge(20);
     u1.setName("ssss");
     //直接插入对象
     user.insert(u1);
     DBCursor cursor=user.find();
     while(cursor.hasNext())
     {
      //传入类参数,反回该类对象
      User u=cursor.nextObj(User.class);
      System.out.println(u.name);
     }
 }

}
时间: 2024-09-29 22:14:58

Java操作Mongodb 保存/读取java对象到/从mongodb的相关文章

【MongoDB数据库】Java MongoDB CRUD Example

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完毕一个简单的Java MongoDB CRUD Example,利用Java连接MongoDB数据库.并实现创建数据库.获取表.遍历表中的对象.对表中对象进行CRUD操作等例程. 1.下载MongoDB Java 支持驱动包 [gitHub下载地址]https://github.com/mongodb/mongo-java-driver/downloads 2.建立Javaproject,并导入ja

java操作Json数据

最近要使用java来操作Json数据,虽然Json用过几次,但一直没有好好总结,趁这次来总结一下java操作Json数据.Java操作Json有很多工具包,地址为http://www.json.org/,可以自己上去挑选. 这里我使用第一个org.json,最新源码地址为:https://github.com/douglascrockford/JSON-java,可以自己去下载,我也会在附件上传.下载源码后放进工程即可,包名为org.json 我们要操作的Json数据如下: {"total&qu

[转载]使用Java操作Mongodb

HelloWorld程序 学习任何程序的第一步,都是编写HelloWorld程序,我们也不例外,看下如何通过Java编写一个HelloWorld的程序. 首先,要通过Java操作Mongodb,必须先下载Mongodb的Java驱动程序,可以在这里下载. 新建立一个Java工程,将下载的驱动程序放在库文件路径下,程序代码如下: 1 package com.mkyong.core; 2 import java.net.UnknownHostException; 3 import com.mongo

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应用.如果想深入了解原理.请读者自行研究一些相关源码. 首先我们来认识一下读取相关文档的jar包: 1. 引用POI包读取word文档内容 poi.jar 下载地址 http://apache.freelamp.com/poi/release/bin/poi-bin-3.6-20091214.zip 

【MongoDB for Java】Java操作MongoDB

开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3.jar.junit-4.8.2.jar 一.准备工作 1. 首先,下载mongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads mongoDB对Java的相关支持.技术:http://www.mongodb.org/

MongDB基础学习(七)—— 【MongoDB for Java】Java操作MongoDB

[MongoDB for Java]Java操作MongoDB 开发的产品为了融资,不停得改版,从第一版到现在最新版本,最后发现公司发展方向都变了,有最初电子商务改成VR内容提供者(没办法,要别人钱,就得按照别人的规划的战略走).本来本章节会放到后面再做讲解,无奈,部门需要做一次培训任务,我就想到拿Java操作MongoDB作为培训内容,开发环境和依赖jar如下: (1)开发环境: System:Windows IDE:eclipse Database:mongoDB2.6 Maven:apac

java操作mongoDB数据库的简单实例

首先导入mongoDB的jar包 http://pan.baidu.com/s/1bnGMJRD //DataBase.java package com.mongodb.test; import java.net.UnknownHostException; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import

java操作mongoDB实现CURD

java操作mongoDB mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量.高并发.弱事务的互联网应用,MongoDB可以应对自如.接触到mongoDB 参考了下api实现了增删改查.mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了.直接贴码: DataTest.java package com.zk.db; import java.net.UnknownHostException; im

Java 操作 Excel (读取Excel2007,Poi实现)

关于Java读取Excel2007的文章在Google.百度上搜索一下,没有太好的例子,实现的也不算太好.查看了一下Poi,最新的 POI 3.5 beta 4 支持读写 Excel2007和PPT2007(XLSX and PPTX),自己来实现Java读取Excel2007了. 1,下载 POI 3.5 beta 4 解压,把其中的jar包导入项目文件.以我的读取为例,导入了以下jar包.  没有配置 log4j,测试时报告警报信息,应该为加载顺序导致的初始化问题造成(暂时没有找原因). 2