【接口类定义】
  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. Win10 开启 热点的简单办法

  2. 如何实现Java线程的 阻塞/唤醒(和暂停/继续 类似)

    以下为线程 阻塞/唤醒  主要代码 public class MyThread extends Thread { //无意义 private final Object lock = new Objec ...

  3. python面向对象中的封装、继承、多态

    封装 可以简单的理解为隐藏一切可以隐藏的实现细节,只向外界提供简单的编程接口.我们在类中定义的方法其实就是把数据和数据的操作封装起来了,在我们创建了对象之后,只需要给对象发送一个消息(调用方法)就可以 ...

  4. 文件的三种打开方式及with管理文件上下文

    文件的三种打开方式及with管理文件上下文 一.文件的三种打开方式 1.1 只读 f = open(r'D:\pycharm\yjy\上海python学习\456.txt','r',encoding= ...

  5. 高效开发之使用Cmder替换cmd

    一.为什么要更换为cmder 在做项目时,有些时候我想复制控制台上面的代码时,cmd有的时候复制粘贴很麻烦,Cmder则不会,并且Cmder可以分屏多开窗口,可以设置窗口颜色,字体大小,并且很多快捷键 ...

  6. Git 生成.gitinore忽略文件

    Git  生成.gitinore忽略文件 CD到指定目录下: touch .gitinore .gitinore忽略文件 三种方法: # 以'#'开始的行,被视为注释.(#是注释的意思) # 忽略掉所 ...

  7. DataWorks(数据工场)

    一.DataWorks(数据工场) DataWorks系列视频 https://help.aliyun.com/video_list/107549.html?spm=a2c4g.11174359.3. ...

  8. Maven项目构建利器04——Maven的一些核心概念

    1.坐标 1)数学上的坐标: [1].在平面上. 使用X,Y两个向量可以唯一的定位平面上的任意一个点 [2]在空间中, 使用X,Y,Z三个向量可以唯一的定位空间中的任何一个点 2)Maven中的坐标: ...

  9. TCP Retransmission 连接超时

    TCP Retransmission 连接超时 kame 2019/3/17 33 TCP 记一次TCP 连接超时 背景 用户反馈 >> 有出现支付超时.页面问题 (部分情况会出现) 分析 ...

  10. windows2008R2下安装sqlserver2008R2时,点setup.exe应用程序无法打开错误代码0xc0150004

    windows2008R2下安装sqlserver2008R2时,点setup.exe应用程序无法打开错误代码0xc0150004 问题截图: 网上查的答案都是需要安装.net framework 3 ...