【接口类定义】
  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. PostgreSQL INSERT ON CONFLICT不存在则插入,存在则更新

    近期有一个需求,向一张数据库表插入数据,如果是新数据则执行插入动作,如果插入的字段和已有字段重复,则更新该行对应的部分字段 1. 创建测试表 create table meta_data ( id s ...

  2. springMvc中获取通过注解获取properties配置文件(转)

    springMvc的项目中,通过注解@Value获取properties配置文件中的配置,使用该注解必须引入的包: spring-beans-4.1.4.RELEASE.jar 下面是需要在sprin ...

  3. 思考--PostgreSQL在与mysql的比较中稍微弱势项

    PostgreSQL在与mysql的比较中稍微弱势项: 1.都是堆表,没有所谓的聚集索引表,其实问题不大,聚集索引表也只是在使用聚集索引那些列有加速,而且pg也有聚集索引,只不过要定期重建. 2.mv ...

  4. olap和Oltp(转)

    OLAP和OLTP的区别(基础知识) 联机分析处理 (OLAP) 的概念最早是由关系数据库之父E.F.Codd于1993年提出的,他同时提出了关于OLAP的12条准则.OLAP的提出引起了很大的反响, ...

  5. Maven - 配置setting.xml

    1.配置本地库路径 <localRepository>C:/fyliu/mvn/repo</localRepository> 2.配置中央仓库 <mirror> & ...

  6. Almost Sorted Array(o(nlgn)求解LIS)

    Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Ot ...

  7. 洛谷P1600 天天爱跑步——题解

    题目传送 首先要考虑入手点.先考虑一个一个玩家处理,显然不加优化的话,时间复杂度是O(n)的.发现对于玩家路径上的点都有一个观察员,一个都不能忽视,看起来是很难优化了.在做题时,发现一个思路很难想,就 ...

  8. Forsaken给学生分组

    链接:https://ac.nowcoder.com/acm/contest/1221/C来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  9. python之self的理解

    一.self的位置是出现在哪里? 首先,self是在类的方法中的,在调用此方法时,不用给self赋值,Python会自动给他赋值,而且这个值就是类的实例--对象本身.也可以将self换成别的叫法例如s ...

  10. java判断一个单向链表是否有环路

    今天刷LeetCode刷到一道这样的题,详情参见(https://leetcode-cn.com/problems/linked-list-cycle/) ADT: class ListNode { ...