MongoDB接口类函数

【接口类定义】
  1. /** 
  2.   * 项目名:SpiderCrawler 
  3.   * 文件名:MongoDBDao.java 
  4.   * 描述:TODO(用一句话描述该文件做什么)  
  5.   */  
  6. package com.newsTest.dao;  
  7.   
  8. import java.util.ArrayList;  
  9.   
  10. import com.mongodb.DB;              //导入数据库DB
  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. }  
 
 
【借口类实现】
  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.      }  
posted @ 2015-03-12 23:02  程序员姜戈  阅读(619)  评论(0编辑  收藏  举报