zoukankan      html  css  js  c++  java
  • 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.      }  
  • 相关阅读:
    微软系统及开发工具官方下载地址
    Office2010文档的MIME类型
    Android开发中Activity的生命周期
    DWZ框架POST方式提交Form提示JSON文件下载
    JAVA开发环境搭建
    FastJSON解析.Net生成的JSON字符串
    SQL Server 2008 如何更改服务器身份验证模式
    如何快速解决IIS中发布的网站不能访问。
    QlickView
    Lamabda表达式
  • 原文地址:https://www.cnblogs.com/yedushusheng/p/4334016.html
Copyright © 2011-2022 走看看