Java串連,操作MongoDB,java串連mongodb

來源:互聯網
上載者:User

Java串連,操作MongoDB,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;    }

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.