【接口类定义】
  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. 【VS开发】解决位图缩放失真

    当用以下函数加载一张位图时,当窗口发生重绘更改大小时,位图将失真: CBitmap bitmap;  bitmap.LoadBitmap(IDB_BITMAP2);  BITMAP bmp;  bit ...

  2. Angular5 tslint错误:The selector of the component “XXXComponent” should be used as element

    错误描述 在项目中自己封装了一个 select 组件 @Component({ selector: '[app-choosen-select]', templateUrl: './selectcomm ...

  3. Akka系列(十):Akka集群之Akka Cluster

    前言........... 上一篇文章我们讲了Akka Remote,理解了Akka中的远程通信,其实Akka Cluster可以看成Akka Remote的扩展,由原来的两点变成由多点组成的通信网络 ...

  4. mysql的最左索引匹配原则

    最近复习数据库,主要看的是mysql.很多东西忘得一干二净.看到某乎上有个答案非常给力,就记录一下,以后方便查看. 链接:https://www.zhihu.com/question/36996520 ...

  5. Linux下路由配置梳理(转)

    转自:https://www.cnblogs.com/kevingrace/p/6490627.html 在日常运维作业中,经常会碰到路由表的操作.下面就linux运维中的路由操作做一梳理:----- ...

  6. property可以声明得位置

    property可以声明的位置有4处 1 @interface处 2 扩展处 3 protocol处 4 分类处 其中分类处的property不会合成实例变量,并且编译器也不会自动合成实例变量

  7. Git介绍、安装、命令和实战

    一.Git介绍 Git是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. 二.Git安装(Mac系统) 在Git官网下载安装包双击直接安装 在终端输入git来检测Git ...

  8. 洛谷 P1194 飞扬的小鸟 题解

    题面 这道题是一道隐藏的比较深的DP(我太蒟蒻了!) 设f[i][j]表示到第i列时高度为j的最少步数是多少: 求上升时的方案就是一个完全背包!,求下降时的方案就是一个01背包: 然后处理边界就能A掉 ...

  9. 元素定位--firebug安装

    1.火狐浏览器调试工具firebug插件的安装 打开浏览器---添加组件---搜索firebug

  10. 曹工说Spring Boot源码(5)-- 怎么从properties文件读取bean

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...