【接口类定义】
  1. /**
  2. * 项目名:SpiderCrawler
  3. * 文件名:MongoDBDao.java
  4. * 描述:TODO(用一句话描述该文件做什么)
  5. */
  6. package com.newsTest.dao;
  7. import java.util.ArrayList;
  8. import com.mongodb.DB;              //导入数据库DB
  9. import com.mongodb.DBCollection;    //导入集合DBCollection
  10. import com.mongodb.DBObject;        //导入对象DBObject
  11. /**
  12. * 类名: MongoDBDao
  13. * 包名: com.newsTest.dao
  14. * 描述: TODO(这里用一句话描述这个类的作用)
  15. */
  16. public interface MongoDBDao {
  17. /**
  18. * 方法名:getDb
  19. * 描述:获取指定的mongodb数据库
  20. * @param dbName
  21. * @return
  22. */
  23. public DB getDb(String dbName);
  24. /**
  25. * 方法名:getCollection
  26. * 描述:获取指定mongodb数据库的collection集合
  27. * @param dbName    数据库名
  28. * @param collectionName    数据库集合
  29. * @return
  30. */
  31. public DBCollection getCollection(String dbName, String collectionName);
  32. /**
  33. * 方法名:inSert
  34. * 描述:向指定的数据库中添加给定的keys和相应的values
  35. * @param dbName
  36. * @param collectionName
  37. * @param keys
  38. * @param values
  39. * @return
  40. */
  41. public boolean inSert(String dbName, String collectionName, String[] keys, Object[] values);
  42. /**
  43. *
  44. * 方法名:delete
  45. * 作者:zhouyh
  46. * 创建时间:2014-8-30 下午04:09:00
  47. * 描述:删除数据库dbName中,指定keys和相应values的值
  48. * @param dbName
  49. * @param collectionName
  50. * @param keys
  51. * @param values
  52. * @return
  53. */
  54. public boolean delete(String dbName, String collectionName, String[] keys, Object[] values);
  55. /**
  56. * 方法名:find
  57. * 描述:从数据库dbName中查找指定keys和相应values的值
  58. * @param dbName
  59. * @param collectionName
  60. * @param keys
  61. * @param values
  62. * @param num
  63. * @return
  64. */
  65. public ArrayList<DBObject> find(String dbName, String collectionName, String[] keys, Object[] values, int num);
  66. /**
  67. * 方法名:update
  68. * 作者:zhouyh
  69. * 创建时间:2014-8-30 下午04:17:54
  70. * 描述:更新数据库dbName,用指定的newValue更新oldValue
  71. * @param dbName
  72. * @param collectionName
  73. * @param oldValue
  74. * @param newValue
  75. * @return
  76. */
  77. public boolean update(String dbName, String collectionName, DBObject oldValue, DBObject newValue);
  78. /**
  79. * 方法名:isExit
  80. * 描述:判断给定的keys和相应的values在指定的dbName的collectionName集合中是否存在
  81. * @param dbName
  82. * @param collectionName
  83. * @param keys
  84. * @param values
  85. * @return
  86. */
  87. public boolean isExit(String dbName, String collectionName, String key, Object value);
  88. }
 
 
【借口类实现】
  1. /**
  2. * 项目名:SpiderCrawler
  3. * 文件名:MongoDBDaoImpl.java
  4. * 描述:TODO(用一句话描述该文件做什么)
  5. */
  6. package com.newsTest.dao.impl;
  7. import java.net.UnknownHostException;  //导入URL的相关Exception的jar包
  8. import java.util.ArrayList;
  9. import com.newsTest.dao.MongoDBDao;    //导入接口类的定义
  10. import com.mongodb.BasicDBObject;
  11. import com.mongodb.DB;
  12. import com.mongodb.DBCollection;
  13. import com.mongodb.DBCursor;          //导入游标
  14. import com.mongodb.DBObject;
  15. import com.mongodb.MongoClient;
  16. import com.mongodb.MongoClientOptions;
  17. import com.mongodb.MongoException;
  18. import com.mongodb.WriteResult;
  19. /**
  20. * 类名: MongoDBDaoImpl
  21. * 包名: com.newsTest.dao.impl
  22. * 描述: TODO(这里用一句话描述这个类的作用)
  23. */
  24. public class MongoDBDaoImpl implements MongoDBDao{
  25. /*MongoDBDao是前面自己定义的接口,而非系统自带*/
  26. /**
  27. * MongoClient的实例代表数据库连接池,是线程安全的,可以被多线程共享,客户端在多线程条件下仅维持  一个实例即可
  28. * Mongo是非线程安全的,目前mongodb API中已经建议用MongoClient替代Mongo
  29. */
  30. private MongoClient mongoClient = null;
  31. /**
  32. * 私有的构造函数
  33. */
  34. private MongoDBDaoImpl(){
  35. if(mongoClient == null){
  36. MongoClientOptions.Builder build = new MongoClientOptions.Builder();
  37. build.connectionsPerHost(50);
  38. //与目标数据库能够建立的最大connection数量为50
  39. build.autoConnectRetry(true);
  40. //自动重连数据库启动
  41. build.threadsAllowedToBlockForConnectionMultiplier(50);
  42. //如果当前所有的connection都在使用中,则每个connection上可以有50个线程排队等待
  43. /*
  44. * 一个线程访问数据库的时候,在成功获取到一个可用数据库连接之前的最长等待时间为2分钟
  45. * 这里比较危险,如果超过maxWaitTime都没有获取到这个连接的话,该线程就会抛出Exception
  46. * 故这里设置的maxWaitTime应该足够大,以免由于排队线程过多造成的数据库访问失败
  47. */
  48. build.maxWaitTime(1000*60*2);
  49. build.connectTimeout(1000*60*1);    //与数据库建立连接的timeout设置为1分钟
  50. MongoClientOptions myOptions = build.build();
  51. try {
  52. //数据库连接实例
  53. mongoClient = new MongoClient("127.0.0.1", myOptions);
  54. } catch (UnknownHostException e) {
  55. // TODO 这里写异常处理的代码
  56. e.printStackTrace();
  57. } catch (MongoException e){
  58. e.printStackTrace();
  59. }
  60. }
  61. }

MongoDB接口类函数的更多相关文章

  1. Python Mongodb接口

    Python Mongodb接口 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. 同时,MongoDB 是一个介于关系 ...

  2. 【翻译】MongoDB指南/引言

    [原文地址]https://docs.mongodb.com/manual/ 引言 MongoDB是一种开源文档型数据库,它具有高性能,高可用性,自动扩展性 1.文档数据库 MongoDB用一个文档来 ...

  3. Mongodb相关 (Shell命令 / mongoose)

    Mongodb相关 1.创建一个文件夹作为数据库存放的目录 2.打开cmd cd到Mongodb/bin目录去 3.执行mongod --dbpath "第一项创建的文件夹(数据库数据存放目 ...

  4. 【一】mongodb安装及配置

    一.mongodb安装 1.下载并解压 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.2.0.tgz tar ...

  5. 技术讨论]mongodb驱动的正确使用方法

    原文地址:http://cnodejs.org/topic/5190d61263e9f8a542acd83b mongo数据库在nodejs平台有2个常用驱动,mongodb和mongoose,mon ...

  6. 如何使用MongoDB+Springboot实现分布式ID?

    转载请标明出处: http://blog.csdn.net/forezp/article/details/69056017 本文出自方志朋的博客 一.背景 如何实现分布式id,搜索相关的资料,一般会给 ...

  7. MongoDB(5)- Document 文档相关

    Documents MongoDB 的文档可以理解为关系型数据库(Mysql)的一行记录 MongoDB 将数据记录为 BSON 格式的文档 BSON 是 JSON 文档的二进制表示,但它支持的数据类 ...

  8. nosql数据库学习

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  9. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

随机推荐

  1. [Vuejs] 在vue各个组件中应用全局scss变量

    需要安装一个插件:sass-resources-loader 1.执行安装命令: npm i sass-resources-loader --save-dev 2.修改vue-cli环境下build文 ...

  2. c++ tcp 服务器和客户端例子

    目标:  完成一个精简TCP服务器,可接收来自多个用户的请求,并返回结果. 思路:  (1)服务器      C++ TCP服务器的实现主要由以下几个函数来完成:        a)socket    ...

  3. MySQL数据库常用引擎

    在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyIASM. 首先: 1.简单介绍这两种引擎,以及该如何去选择.2.这两种引擎所使用的数据结构是什么. 1. a.Innodb引擎,Inn ...

  4. (5.1.4)引擎管理——SSMS管理使用小技巧

    目录 [1]自带报表 [2]对象管理器详细信息 [3]日志 [4]活动监视器 [1]自带报表 无论是数据库.服务器实例.还是代理等等都可以有标准报表 [2]对象管理器详细信息 利用改方式,可以很有效的 ...

  5. python 压缩文件(解决压缩路径问题)

    #压缩文件 def Zip_files(): datapath = filepath # 证据路径 file_newname = datapath + '.zip' # 压缩文件的名字 log.deb ...

  6. PythonWeb框架Django搭建过程

    首先下载PyCharm专业版 破解地址:https://www.52pojie.cn/thread-997094-1-1.html 之后创建python虚拟环境(创建虚拟环境在上一篇博客) 激活虚拟环 ...

  7. UDP协议&socketserver模块

    UDP协议&socketserver模块 一.UDP协议 1.1 UDP实现简单通信 服务器 ------------------------------------------------- ...

  8. pgsql物理复制(pgsql 备库的搭建以及角色互换,提升)

    结构图如下: Postgresql早在9.0版本开始支持物理复制,也称为流复制,通过从实例级复制出一个与主库一模一样的备库.流复制同步方式有同步,异步两种,如果主节点和备节点不是很忙,通常异步模式下备 ...

  9. Homebrew学习(七)之你应该定期更新 Homebrew

    参考 你应该定期更新 Homebrew

  10. [转载]Oracle之单引号与双引号

    一.单引号 1.引用一个字符串常量,也就是界定一个字符串的开始和结束 select * from t_sys_user where id='15'; --查询id为15的字符 select * fro ...