MongoDB接口類函數

【接口類定義】 java

[java] view plaincopy  mongodb

  1. /** 數據庫

  2.   * 項目名:SpiderCrawler 安全

  3.   * 文件名:MongoDBDao.java 多線程

  4.   * 描述:TODO(用一句話描述該文件作什麼)  ide

  5.   */  函數

  6. package com.newsTest.dao;  ui

  7.   

  8. import java.util.ArrayList;  spa

  9.   

  10. import com.mongodb.DB;              //導入數據庫DB.net

  11. import com.mongodb.DBCollection;    //導入集合DBCollection

  12. import com.mongodb.DBObject;        //導入對象DBObject

  13.   

  14. /** 

  15.  * 類名: MongoDBDao 

  16.  * 包名: com.newsTest.dao 

  17.  * 描述: TODO(這裏用一句話描述這個類的做用)  

  18.  */  

  19. public interface MongoDBDao {  

  20.     /**  

  21.      * 方法名:getDb 

  22.      * 描述:獲取指定的mongodb數據庫 

  23.      * @param dbName 

  24.      * @return 

  25.      */  

  26.     public DB getDb(String dbName);  

  27.     /**   

  28.      * 方法名:getCollection 

  29.      * 描述:獲取指定mongodb數據庫的collection集合 

  30.      * @param dbName    數據庫名 

  31.      * @param collectionName    數據庫集合 

  32.      * @return 

  33.      */  

  34.     public DBCollection getCollection(String dbName, String collectionName);  

  35.     /** 

  36.      * 方法名:inSert 

  37.      * 描述:向指定的數據庫中添加給定的keys和相應的values 

  38.      * @param dbName 

  39.      * @param collectionName 

  40.      * @param keys 

  41.      * @param values 

  42.      * @return 

  43.      */  

  44.     public boolean inSert(String dbName, String collectionName, String[] keys, Object[] values);  

  45.     /** 

  46.      *  

  47.      * 方法名:delete 

  48.      * 做者:zhouyh 

  49.      * 建立時間:2014-8-30 下午04:09:00 

  50.      * 描述:刪除數據庫dbName中,指定keys和相應values的值 

  51.      * @param dbName 

  52.      * @param collectionName 

  53.      * @param keys 

  54.      * @param values 

  55.      * @return 

  56.      */  

  57.     public boolean delete(String dbName, String collectionName, String[] keys, Object[] values);  

  58.     /** 

  59.      * 方法名:find 

  60.      * 描述:從數據庫dbName中查找指定keys和相應values的值 

  61.      * @param dbName 

  62.      * @param collectionName 

  63.      * @param keys 

  64.      * @param values 

  65.      * @param num 

  66.      * @return 

  67.      */  

  68.     public ArrayList<DBObject> find(String dbName, String collectionName, String[] keys, Object[] values, int num);  

  69.     /**  

  70.      * 方法名:update 

  71.      * 做者:zhouyh 

  72.      * 建立時間:2014-8-30 下午04:17:54 

  73.      * 描述:更新數據庫dbName,用指定的newValue更新oldValue 

  74.      * @param dbName 

  75.      * @param collectionName 

  76.      * @param oldValue 

  77.      * @param newValue 

  78.      * @return 

  79.      */  

  80.     public boolean update(String dbName, String collectionName, DBObject oldValue, DBObject newValue);  

  81.     /**   

  82.      * 方法名:isExit 

  83.      * 描述:判斷給定的keys和相應的values在指定的dbName的collectionName集合中是否存在 

  84.      * @param dbName 

  85.      * @param collectionName 

  86.      * @param keys 

  87.      * @param values 

  88.      * @return 

  89.      */  

  90.     public boolean isExit(String dbName, String collectionName, String key, Object value);  

  91.       

  92. }  

 

 

【藉口類實現】

[java] view plaincopy

  1. /** 

  2.   * 項目名:SpiderCrawler 

  3.   * 文件名:MongoDBDaoImpl.java 

  4.   * 描述:TODO(用一句話描述該文件作什麼)  

  5.   */  

  6. package com.newsTest.dao.impl;  

  7.   

  8. import java.net.UnknownHostException;  //導入URL的相關Exception的jar包

  9. import java.util.ArrayList;  

  10.   

  11. import com.newsTest.dao.MongoDBDao;    //導入接口類的定義

  12. import com.mongodb.BasicDBObject;  

  13. import com.mongodb.DB;  

  14. import com.mongodb.DBCollection;  

  15. import com.mongodb.DBCursor;          //導入遊標 

  16. import com.mongodb.DBObject;  

  17. import com.mongodb.MongoClient;  

  18. import com.mongodb.MongoClientOptions;  

  19. import com.mongodb.MongoException;  

  20. import com.mongodb.WriteResult;  

  21.   

  22. /** 

  23.  * 類名: MongoDBDaoImpl 

  24.  * 包名: com.newsTest.dao.impl 

  25.  * 描述: TODO(這裏用一句話描述這個類的做用)  

  26.  */  

  27. public class MongoDBDaoImpl implements MongoDBDao{  

  28.  /*MongoDBDao是前面本身定義的接口,而非系統自帶*/   

  29.  /** 

  30.  * MongoClient的實例表明數據庫鏈接池,是線程安全的,能夠被多線程共享,客戶端在多線程條件下僅維持  一個實例便可 

  31.  * Mongo是非線程安全的,目前mongodb API中已經建議用MongoClient替代Mongo 

  32.  */  

  33.  private MongoClient mongoClient = null;  

  34.  /**  

  35.  * 私有的構造函數 

  36.  */  

  37.  private MongoDBDaoImpl(){  

  38.     if(mongoClient == null){  

  39.        MongoClientOptions.Builder build = new MongoClientOptions.Builder();          

  40.        build.connectionsPerHost(50); 

  41.        //與目標數據庫可以創建的最大connection數量爲50  

  42.        build.autoConnectRetry(true);   

  43.        //自動重連數據庫啓動  

  44.        build.threadsAllowedToBlockForConnectionMultiplier(50); 

  45.       //若是當前全部的connection都在使用中,則每一個connection上能夠有50個線程排隊等待  

  46.   /* 

  47.   * 一個線程訪問數據庫的時候,在成功獲取到一個可用數據庫鏈接以前的最長等待時間爲2分鐘 

  48.   * 這裏比較危險,若是超過maxWaitTime都沒有獲取到這個鏈接的話,該線程就會拋出Exception 

  49.   * 故這裏設置的maxWaitTime應該足夠大,以避免因爲排隊線程過多形成的數據庫訪問失敗 

  50.   */  

  51.        build.maxWaitTime(1000*60*2);  

  52.        build.connectTimeout(1000*60*1);    //與數據庫創建鏈接的timeout設置爲1分鐘  

  53.               

  54.        MongoClientOptions myOptions = build.build();         

  55.        try {  

  56.            //數據庫鏈接實例  

  57.             mongoClient = new MongoClient("127.0.0.1", myOptions);            

  58.        } catch (UnknownHostException e) {  

  59.            // TODO 這裏寫異常處理的代碼  

  60.             e.printStackTrace();  

  61.        } catch (MongoException e){  

  62.             e.printStackTrace();  

  63.        }  

  64.               

  65.      }  

相關文章
相關標籤/搜索