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; }
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。