Java连接,操作MongoDB

java连接MongoDB非常的简单,具体来说就2步:

1:向新建的工程中导入java-mongo的驱动包

如图:

2:建立一个链接帮助类,完成链接操作

package com.yc.mongodb;
import java.util.Iterator;
import java.util.Set;

import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.Mongo;
import com.mongodb.WriteResult;

public class MongoLink2 {

    public static void main(String[] args) {
        Mongo mongo=null;
        DB db=null;
        try {
            //链接mongo服务器
            mongo=new Mongo("127.0.0.1",27017);

            //根据mongodb数据库的名称获得DB对象,连接数据库yc
            db=mongo.getDB("yc");
            //发送获得请求
            db.requestStart();
            //获得其集合
            Set<String> collections=db.getCollectionNames();
            Iterator itr=collections.iterator();
            //迭代输出信息
            while(itr.hasNext()){
                System.out.println(itr.next());
            }

            DBCollection dbObject=db.getCollection("yc");
            DBObject object=null;
            //添加
            object=new BasicDBObject();
            object.put("_id", 1003);
            object.put("name","张三");
            object.put("sex","男");
            WriteResult rs=dbObject.insert(object);
            object.put("_id", 1002);
            //移除
            dbObject.remove(new BasicDBObject());
            //查询所有
            DBCursor cursor=dbObject.find();
            while(cursor.hasNext()){
                object=cursor.next();
                System.out.println(object);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            if(mongo!=null){
                mongo.close();
            }
        }
    }
}

运行的结果如下:

至此,其实已经可以使用,代码的耦合太高,功能捆绑的太严重,不方便调用,

接着对其进行封装。

先定义一个属性文件:

里面定义了一些基本的配置,例如用户名,数据库名,ip,端口等。

接着定义一个类去读取其文件.这里文件的话最好被定义为单例,

package com.yc.mongodb;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

@SuppressWarnings("serial")
public class MyPro extends Properties{

    private static MyPro instanece=new MyPro();

    private MyPro(){
        InputStream is=MyPro.class.getResourceAsStream("/db.properties");
        try {
            this.load(is);
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(is!=null){
                try {
                    is.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    public static MyPro getInstance(){
        return instanece;
    }

}

像操作oracle一样定义一个DBHelper类,实现对数据操作的封装:

如下:

package com.yc.mongodb;

import java.net.UnknownHostException;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoException;

public class DBHelper {
    private static Mongo mongo=null;
    private DB db=null;
    private DBCollection collection=null;

    static{
            try {
                mongo=new Mongo(MyPro.getInstance().getProperty("ip"),Integer.parseInt(MyPro.getInstance().getProperty("port")));
            } catch (NumberFormatException e) {
                e.printStackTrace();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (MongoException e) {
                e.printStackTrace();
            }
            System.out.println(mongo);
    }

    /**
     *
     * @param dbName
     * @param name
     * @param pwd
     * @return
     */
    public boolean getDB(String dbName,String name,String pwd){
        db=mongo.getDB(dbName);
        if(name!=null&&!"".equals(name)&&pwd!=null&&!"".equals(pwd)){
            if(db.authenticate(name, pwd.toCharArray())){
                return true;
            }else{
                return false;
            }
        }else{
            //查看配置文件中是否给定了用户名和密码
            String uname=MyPro.getInstance().getProperty("uname");
            String pwds=MyPro.getInstance().getProperty("password");
            if(uname!=null&&!"".equals(uname)&&pwds!=null&&!"".equals(pwds)){
                if(db.authenticate(uname, pwds.toCharArray())){
                    return true;
                }else{
                    return false;
                }
            }
        }
        return true;
    }
    /**
     * 关闭连接
     * @param mongo
     */
    public void closeAll(Mongo mongo){
        if(mongo!=null){
            mongo.close();
        }
    }

}
//利用方法重载实现不同情况的传参
/**
     * 获取指定的集合
     * @param collectionName :要链接的集合
     * @param dbName:集合所在的数据库
     * @return
     */
    public DBCollection getDBCollection(String collectionName,String dbName){
        DBCollection dBCollection=null;
        if(getDB(dbName,null, null)){
            db.requestStart();
            if(collectionName==null){//如果为空则从配置文件中查找
                collectionName=MyPro.getInstance().getProperty("collectionName");
            }
            dBCollection=db.getCollection(collectionName);
        }else{
            //抛出异常
            throw new RuntimeException("数据库连接失败");
        }
        return dBCollection;
    }
    /**
     *
     * @param collectionName
     * @param dbName
     * @param name
     * @param password
     * @return
     */
    public DBCollection getDBCollection(String collectionName,String dbName,String name,String password){
        DBCollection dBCollection=null;
        if(getDB(dbName,name, password)){
            db.requestStart();
            if(collectionName==null){//如果为空则从配置文件中查找
                collectionName=MyPro.getInstance().getProperty("collectionName");
            }
            dBCollection=db.getCollection(collectionName);
        }else{
            //抛出异常
            throw new RuntimeException("数据库连接失败");
        }
        return dBCollection;
    }
    /**
     * 只传递集合名字
     * @param collectionName
     * @return
     */
    public DBCollection getDBCollection(String collectionName){
        DBCollection dBCollection=null;
        String dbName=MyPro.getInstance().getProperty("dbName");
        if(getDB(dbName,null, null)){
            db.requestStart();
            if(collectionName==null){//如果为空则从配置文件中查找
                collectionName=MyPro.getInstance().getProperty("collectionName");
            }
            dBCollection=db.getCollection(collectionName);
        }else{
            //抛出异常
            throw new RuntimeException("数据库连接失败");
        }
        return dBCollection;
    }

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-07 06:19:21

Java连接,操作MongoDB的相关文章

Java开发--操作MongoDB

http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过前一篇文章我们对MongoDB有了全面的认识和理解.现在我们就用Java来操作MongoDB的数据. 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开发依赖库: JavaEE5.mongo-2.5.3.jar.junit-4.8.2.j

java中操作Mongodb

Mongodb是一个nosql型的数据库,存储的是类似于json对象,能够支持类似于关系型数据库的一些操作.以下是java操作mongodb. 一.建立连接(没有使用任何框架,连接是自己写的,同时在这个类写了关闭连接的方法),传入ip地址.端口和数据库名称(mongodb称集合) public class MongoDbConn { private static MongoClient mongoClient = null; private static MongoDatabase mongoD

Java 连接操作 Redis 出现错误

Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect at redis.clients.jedis.Connection.connect(Connection.java:207) at redis.clients.jedis.BinaryClient.connect

Redis系列--6、Redis Java连接操作

安装 要在Java程序中使用使用操作Redis,需要确保有Redis的Java驱动程序和Java设置在机器上.可以检查看Java教程-学习如何在机器上安装Java.现在,让我们来看看如何设置Redis的Java驱动程序. 需要下载jedis.jar.请一定要下载它的最新版本. 需要包括jedis.jar到你的类路径中. 连接到Redis服务器 import redis.clients.jedis.Jedis; public class RedisJava {    public static v

Redis Java连接操作(转)

原文地址:http://www.yiibai.com/redis/redis_java.html 要在Java程序中使用使用操作Redis,需要确保有Redis的Java驱动程序和Java设置在机器上.可以检查看Java教程-学习如何在机器上安装Java.现在,让我们来看看如何设置Redis的Java驱动程序. 需要下载jedis.jar.请一定要下载它的最新版本. 需要包括jedis.jar到你的类路径中. 连接到Redis服务器 import redis.clients.jedis.Jedi

部署PHP连接操作MongoDB环境

1,下载MongoDB数据库扩展介质 wget http://pecl.php.net/get/mongo-1.5.1.tgz 2,tar  zxvf mongo-1.5.1.tgz && cd mongo-1.5.1 && phpize 3,find / -name php-config 搜索php配置文件 4,预编译配置 ./configure --with-php-config=/usr/bin/php-config 5,make && make in

学习MongoDB--(11):应用举例(利用java操作MongoDB)

原文地址:http://blog.csdn.net/drifterj/article/details/7948090 目录地址:http://blog.csdn.net/DrifterJ/article/category/1191327/2 前面我们都是通过shell来操作存取MongoDB的数据,shell中使用的语言就是javascript.我们这次说一下如何通过Java来访问操作MongoDB数据库的. Java驱动程序是MongoDB最早的驱动,已用于生产环境很长时间,十分稳定.可以到M

不使用spring的情况下原生java代码两种方式操作mongodb数据库

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群

不使用spring的情况下用java原生代码操作mongodb数据库的两种方式

由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常.   主要原因实际上是和mongodb本身无关的,因为他们改的是配置文件的密码,而实际上这个密码在代码中根本就没有使用,他们在代码中已经把用户验证信息写死.   在协助他们解决这个问题的时候,我看到他们代码中在和mongodb数据库交互时使用了已经不被建议使用的方法,于是便抽时间尝试了一下另一种被建议的方式实现各功能.   当然了,生产环境中用的是mongodb集群