首页 > 数据库 > MongoDB > 正文

Java操作MongoDB数据库示例分享

2020-03-14 13:25:02
字体:
来源:转载
供稿:网友

MongoDB是一个文档型数据库,是NOSQL家族中最重要的成员之一,以下代码封装了MongoDB的基本操作。具体都在备注当中,要仔细看哦

MongoDB是一个文档型数据库,是NOSQL家族中最重要的成员之一,以下代码封装了MongoDB的基本操作。

MongoDBConfig.java

 

 
  1. package com.posoftframework.mongodb; 
  2. import java.io.File; 
  3. import java.io.FileInputStream; 
  4. import java.io.IOException; 
  5. import java.util.Enumeration; 
  6. import java.util.HashMap; 
  7. import java.util.Hashtable; 
  8. import java.util.List; 
  9. import java.util.Map; 
  10. import java.util.Properties; 
  11. import com.mongodb.DB; 
  12. import com.mongodb.Mongo; 
  13. /** 
  14. * MongoDB配置类 
  15.  
  16. * @author yongtree 
  17. * @date 2010-7-7 下午07:45:08 
  18. * @version 1.0 
  19. */ 
  20. public class MongoDBConfig { 
  21. private static Mongo mongo; 
  22. private static DB db; 
  23. private static final String MONGO_DB_ADDRESS = "localhost"
  24. private static final int MONGO_DB_PORT = 27017; 
  25. private static final String MONGO_DB_USERNAME = "root"
  26. private static final String MONGO_DB_PASSWORD = "root"
  27. private static final String MONGO_DB_DBNAME = "mongodb"
  28. private static final String MONGO_DB_RESOURCE_FILE = "mongodb.cfg.properties"
  29. /** 
  30. * Mongo数据库参数 
  31. */ 
  32. private static Map<String, String> cfgMap = new HashMap<String, String>(); 
  33. private static Hashtable<String, DB> mongoDBs = new Hashtable<String, DB>(); 
  34. /** 
  35. * 初始化Mongo的数据库 
  36. */ 
  37. static { 
  38. init(); 
  39. public static File getConfigFile() { 
  40. String path = MongoDBConfig.class.getResource("/").getPath(); 
  41. String fileName = path + MONGO_DB_RESOURCE_FILE; 
  42. File file = new File(fileName); 
  43. if (file.exists()) { 
  44. return file; 
  45. return null
  46. @SuppressWarnings("unchecked"
  47. private static void initCfgMap() { 
  48. File file = getConfigFile(); 
  49. if (file != null) { 
  50. Properties p = new Properties(); 
  51. try { 
  52. p.load(new FileInputStream(file)); 
  53. for (Enumeration enu = p.propertyNames(); enu.hasMoreElements();) { 
  54. String key = (String) enu.nextElement(); 
  55. String value = (String) p.getProperty(key); 
  56. cfgMap.put(key, value); 
  57. catch (IOException e) { 
  58. System.out.println("记载Mongo配置文件失败!"); 
  59. e.printStackTrace(); 
  60. else { 
  61. cfgMap.put("mongo.db.address", MONGO_DB_ADDRESS); 
  62. cfgMap.put("mongo.db.port", String.valueOf(MONGO_DB_PORT)); 
  63. cfgMap.put("mongo.db.username", MONGO_DB_USERNAME); 
  64. cfgMap.put("mongo.db.password", MONGO_DB_PASSWORD); 
  65. cfgMap.put("mongo.db.dbname", MONGO_DB_DBNAME); 
  66. /** 
  67. * 初始化Mongo数据库 
  68. */ 
  69. private static void init() { 
  70. initCfgMap(); 
  71. try { 
  72. String address = cfgMap.get("mongo.db.address"); 
  73. int port = Integer.parseInt(cfgMap.get("mongo.db.port").toString()); 
  74. String dbName = cfgMap.get("mongo.db.dbname"); 
  75. String username = cfgMap.get("mongo.db.username"); 
  76. String password = cfgMap.get("mongo.db.password"); 
  77. mongo = new Mongo(address, port); 
  78. if (dbName != null && !"".equals(dbName)) { 
  79. db = mongo.getDB(dbName); 
  80. if (username != null && !"".equals(username)) { 
  81. db.addUser(username, password.toCharArray()); 
  82. mongoDBs.put(dbName, db); 
  83. catch (IOException e) { 
  84. e.printStackTrace(); 
  85. /** 
  86. * 得到Mongo的实例 
  87.  
  88. * @return 
  89. */ 
  90. public static Mongo getMongo() { 
  91. return mongo; 
  92. /** 
  93. * 得到Mongo的图片数据库 
  94.  
  95. * @return 
  96. */ 
  97. public static DB getDB() { 
  98. return db; 
  99. public static List<String> getDBNames() { 
  100. return mongo.getDatabaseNames(); 
  101. /** 
  102. * 根据数据库名称,得到数据库<br/> 
  103. * 如果不存在,则创建一个该名称的数据库,并设置用户名和密码为配置文件中的参数值</br> 
  104.  
  105. * @param dbName 
  106. * @return 
  107. */ 
  108. public static DB getDBByName(String dbName) { 
  109. DB db = mongo.getDB(dbName); 
  110. if (!mongoDBs.contains(db)) { 
  111. db.addUser(cfgMap.get("mongo.db.username"), cfgMap.get( 
  112. "mongo.db.password").toCharArray()); 
  113. mongoDBs.put(dbName, db); 
  114. return db; 

MongoService.java

 

 
  1. /************************* 版权声明 ********************************* 
  2. * * 
  3. * 版权所有:百洋软件 * 
  4. * Copyright (c) 2010 by www.po-soft.com * 
  5. * * 
  6. ************************* 变更记录 ********************************* 
  7. * 
  8. * 创建者:yongtree 创建日期: 2010-7-7 
  9. * 备注: 
  10.  
  11. * 修改者: 修改日期: 
  12. * 备注: 
  13.  
  14. */ 
  15. package com.posoftframework.mongodb; 
  16. import java.util.List; 
  17. import java.util.Map; 
  18. import com.mongodb.DB; 
  19. import com.mongodb.DBCollection; 
  20. import com.mongodb.DBObject; 
  21. /** 
  22. * 操作MongoDB的DAO接口 
  23.  
  24. * @author yongtree 
  25. * @date 2010-7-7 下午04:44:43 
  26. * @version 1.0 
  27. */ 
  28. public interface MongoService { 
  29. public abstract DBCollection getCollection(); 
  30. /** 
  31. * 根据数据集合的Map,插入数据 map的key对应数据库中的DBCollection的key值 
  32.  
  33. * @param obj 
  34. */ 
  35. public abstract DBObject insert(DBObject obj); 
  36. /** 
  37. * 根据List<Map<String,Object>>结构的数据集合,插入数据 
  38.  
  39. * @param list 
  40. */ 
  41. public abstract void insertBatch(List<DBObject> list); 
  42. /** 
  43. * 按照条件参数集合map,删除数据 
  44.  
  45. * @param map 
  46. */ 
  47. public abstract void delete(DBObject obj); 
  48. /** 
  49. * 按照多种条件的并集,批量删除数据 
  50.  
  51. * @param list 
  52. */ 
  53. public abstract void deleteBatch(List<DBObject> list); 
  54. /** 
  55. * 得到Collection()总的记录数 
  56.  
  57. * @return 
  58. */ 
  59. public abstract long getCollectionCount(); 
  60. public abstract long getCount(DBObject query); 
  61. public abstract List<DBObject> find(DBObject query); 
  62. public abstract List<DBObject> find(DBObject query,DBObject sort); 
  63. public abstract List<DBObject> find(DBObject query,DBObject sort,int start,int limit); 
  64. /** 
  65. * 根据whereFields参数,更新setFields值 
  66.  
  67. * @param setFields 
  68. * @param whereFields 
  69. */ 
  70. public abstract void update(DBObject setFields, 
  71. DBObject whereFields); 
  72. public abstract List<DBObject> findAll(); 
  73. /** 
  74. * 根据ID找到唯一数据 有1个id字段标记 
  75.  
  76. * @param id 
  77. * @return 
  78. */ 
  79. public abstract DBObject getById(String id); 
  80. /** 
  81. * 获取所有数据库名称 
  82.  
  83. * @return 
  84. */ 
  85. public List<String> getAllDBNames(); 
  86. public abstract String getDbName(); 
  87. public abstract void setDbName(String dbName); 
  88. public abstract DB getDb(); 
  89. public abstract String getCollName(); 
  90. public abstract void setCollName(String collName); 

MongoServiceImpl.java

 

  1. /************************* 版权声明 ********************************* 
  2. * * 
  3. * 版权所有:百洋软件 * 
  4. * Copyright (c) 2010 by www.po-soft.com * 
  5. * * 
  6. ************************* 变更记录 ********************************* 
  7. * 
  8. * 创建者:yongtree 创建日期: 2010-7-7 
  9. * 备注: 
  10.  
  11. * 修改者: 修改日期: 
  12. * 备注: 
  13.  
  14. */ 
  15. package com.posoftframework.mongodb; 
  16. import java.util.ArrayList; 
  17. import java.util.List; 
  18. import java.util.Map; 
  19. import org.bson.types.ObjectId; 
  20. import com.mongodb.BasicDBObject; 
  21. import com.mongodb.DB; 
  22. import com.mongodb.DBCollection; 
  23. import com.mongodb.DBCursor; 
  24. import com.mongodb.DBObject; 
  25. /** 
  26.  
  27. * @author yongtree 
  28. * @date 2010-7-7 下午07:22:15 
  29. * @version 1.0 
  30. */ 
  31. public class MongoServiceImpl implements MongoService { 
  32. private String dbName; 
  33. private String collName; 
  34. private DB db; 
  35. public MongoServiceImpl(String dbName, String collName) { 
  36. this.dbName = dbName; 
  37. this.collName = collName; 
  38. try { 
  39. db = MongoDBConfig.getDBByName(this.dbName); 
  40. catch (Throwable e) { 
  41. e.printStackTrace(); 
  42. public MongoServiceImpl() { 
  43. getDb(); 
  44. public DBCollection getCollection() { 
  45. return db.getCollection(this.collName); 
  46. public DBObject map2Obj(Map<String, Object> map) { 
  47. DBObject obj = new BasicDBObject(); 
  48. if (map.containsKey("class") && map.get("class"instanceof Class) 
  49. map.remove("class"); 
  50. obj.putAll(map); 
  51. return obj; 
  52. public DBObject insert(DBObject obj) { 
  53. getCollection().insert(obj); 
  54. return obj; 
  55. public void insertBatch(List<DBObject> list) { 
  56. if (list == null || list.isEmpty()) { 
  57. return
  58. List<DBObject> listDB = new ArrayList<DBObject>(); 
  59. for (int i = 0; i < list.size(); i++) { 
  60. listDB.add(list.get(i)); 
  61. getCollection().insert(listDB); 
  62. public void delete(DBObject obj) { 
  63. getCollection().remove(obj); 
  64. public void deleteBatch(List<DBObject> list) { 
  65. if (list == null || list.isEmpty()) { 
  66. return
  67. for (int i = 0; i < list.size(); i++) { 
  68. getCollection().remove(list.get(i)); 
  69. public long getCollectionCount() { 
  70. return getCollection().getCount(); 
  71. public long getCount(DBObject obj) { 
  72. if (obj != null
  73. return getCollection().getCount(obj); 
  74. return getCollectionCount(); 
  75. public List<DBObject> find(DBObject obj) { 
  76. DBCursor cur = getCollection().find(obj); 
  77. return DBCursor2list(cur); 
  78. @Override 
  79. public List<DBObject> find(DBObject query, DBObject sort) { 
  80. DBCursor cur; 
  81. if (query != null) { 
  82. cur = getCollection().find(query); 
  83. else { 
  84. cur = getCollection().find(); 
  85. if (sort != null) { 
  86. cur.sort(sort); 
  87. return DBCursor2list(cur); 
  88. @Override 
  89. public List<DBObject> find(DBObject query, DBObject sort, int start, 
  90. int limit) { 
  91. DBCursor cur; 
  92. if (query != null) { 
  93. cur = getCollection().find(query); 
  94. else { 
  95. cur = getCollection().find(); 
  96. if (sort != null) { 
  97. cur.sort(sort); 
  98. if (start == 0) { 
  99. cur.batchSize(limit); 
  100. else { 
  101. cur.skip(start).limit(limit); 
  102. return DBCursor2list(cur); 
  103. private List<DBObject> DBCursor2list(DBCursor cur) { 
  104. List<DBObject> list = new ArrayList<DBObject>(); 
  105. if (cur != null) { 
  106. list = cur.toArray(); 
  107. return list; 
  108. public void update(DBObject setFields, DBObject whereFields) { 
  109. getCollection().updateMulti(setFields, whereFields); 
  110. public List<DBObject> findAll() { 
  111. DBCursor cur = getCollection().find(); 
  112. List<DBObject> list = new ArrayList<DBObject>(); 
  113. if (cur != null) { 
  114. list = cur.toArray(); 
  115. return list; 
  116. public DBObject getById(String id) { 
  117. DBObject obj = new BasicDBObject(); 
  118. obj.put("_id"new ObjectId(id)); 
  119. DBObject result = getCollection().findOne(obj); 
  120. return result; 
  121. public String getDbName() { 
  122. return dbName; 
  123. public void setDbName(String dbName) { 
  124. this.dbName = dbName; 
  125. this.db = MongoDBConfig.getDBByName(this.dbName); 
  126. public String getCollName() { 
  127. return collName; 
  128. public void setCollName(String collName) { 
  129. this.collName = collName; 
  130. public DB getDb() { 
  131. if (this.db == null) { 
  132. if (this.dbName == null) { 
  133. this.db = MongoDBConfig.getDB(); 
  134. else { 
  135. this.db = MongoDBConfig.getDBByName(this.dbName); 
  136. return this.db; 
  137. public List<String> getAllDBNames() { 
  138. return MongoDBConfig.getDBNames(); 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表