• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Java操作MongoDB数据库示例分享

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

    MongoDBConfig.java

    package com.posoftframework.mongodb;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.Hashtable;
    import java.util.List;
    import java.util.Map;
    import java.util.Properties;
    import com.mongodb.DB;
    import com.mongodb.Mongo;
    /**
     * MongoDB配置类
     * 
     * @author yongtree
     * @date 2010-7-7 下午07:45:08
     * @version 1.0
     */
    public class MongoDBConfig {
      private static Mongo mongo;
      private static DB db;
      private static final String MONGO_DB_ADDRESS = "localhost";
      private static final int MONGO_DB_PORT = 27017;
      private static final String MONGO_DB_USERNAME = "root";
      private static final String MONGO_DB_PASSWORD = "root";
      private static final String MONGO_DB_DBNAME = "mongodb";
      private static final String MONGO_DB_RESOURCE_FILE = "mongodb.cfg.properties";
      /**
       * Mongo数据库参数
       */
      private static MapString, String> cfgMap = new HashMapString, String>();
      private static HashtableString, DB> mongoDBs = new HashtableString, DB>();
      /**
       * 初始化Mongo的数据库
       */
      static {
        init();
      }
      public static File getConfigFile() {
        String path = MongoDBConfig.class.getResource("/").getPath();
        String fileName = path + MONGO_DB_RESOURCE_FILE;
        File file = new File(fileName);
        if (file.exists()) {
          return file;
        }
        return null;
      }
      @SuppressWarnings("unchecked")
      private static void initCfgMap() {
        File file = getConfigFile();
        if (file != null) {
          Properties p = new Properties();
          try {
            p.load(new FileInputStream(file));
            for (Enumeration enu = p.propertyNames(); enu.hasMoreElements();) {
              String key = (String) enu.nextElement();
              String value = (String) p.getProperty(key);
              cfgMap.put(key, value);
            }
          } catch (IOException e) {
            System.out.println("记载Mongo配置文件失败!");
            e.printStackTrace();
          }
        } else {
          cfgMap.put("mongo.db.address", MONGO_DB_ADDRESS);
          cfgMap.put("mongo.db.port", String.valueOf(MONGO_DB_PORT));
          cfgMap.put("mongo.db.username", MONGO_DB_USERNAME);
          cfgMap.put("mongo.db.password", MONGO_DB_PASSWORD);
          cfgMap.put("mongo.db.dbname", MONGO_DB_DBNAME);
        }
      }
      /**
       * 初始化Mongo数据库
       */
      private static void init() {
        initCfgMap();
        try {
          String address = cfgMap.get("mongo.db.address");
          int port = Integer.parseInt(cfgMap.get("mongo.db.port").toString());
          String dbName = cfgMap.get("mongo.db.dbname");
          String username = cfgMap.get("mongo.db.username");
          String password = cfgMap.get("mongo.db.password");
          mongo = new Mongo(address, port);
          if (dbName != null  !"".equals(dbName)) {
            db = mongo.getDB(dbName);
            if (username != null  !"".equals(username)) {
              db.addUser(username, password.toCharArray());
            }
            mongoDBs.put(dbName, db);
          }
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      /**
       * 得到Mongo的实例
       * 
       * @return
       */
      public static Mongo getMongo() {
        return mongo;
      }
      /**
       * 得到Mongo的图片数据库
       * 
       * @return
       */
      public static DB getDB() {
        return db;
      }
      public static ListString> getDBNames() {
        return mongo.getDatabaseNames();
      }
      /**
       * 根据数据库名称,得到数据库br/>
       * 如果不存在,则创建一个该名称的数据库,并设置用户名和密码为配置文件中的参数值/br>
       * 
       * @param dbName
       * @return
       */
      public static DB getDBByName(String dbName) {
        DB db = mongo.getDB(dbName);
        if (!mongoDBs.contains(db)) {
          db.addUser(cfgMap.get("mongo.db.username"), cfgMap.get(
              "mongo.db.password").toCharArray());
          mongoDBs.put(dbName, db);
        }
        return db;
      }
    }
    
    

    MongoService.java

    /************************* 版权声明 *********************************
     *                                                               *
     *           版权所有:百洋软件                                                    *
     *     Copyright (c) 2010 by www.po-soft.com                        *
     *                                                               *
     ************************* 变更记录 *********************************
     *
     * 创建者:yongtree  创建日期: 2010-7-7
     * 备注:
     * 
     * 修改者:    修改日期:
     * 备注:
     * 
     */
    package com.posoftframework.mongodb;
    import java.util.List;
    import java.util.Map;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.DBObject;
    /**
     * 操作MongoDB的DAO接口
     * 
     * @author yongtree
     * @date 2010-7-7 下午04:44:43
     * @version 1.0
     */
    public interface MongoService {
      public abstract DBCollection getCollection();
      /**
       * 根据数据集合的Map,插入数据 map的key对应数据库中的DBCollection的key值
       * 
       * @param obj
       */
      public abstract DBObject insert(DBObject obj);
      /**
       * 根据ListMapString,Object>>结构的数据集合,插入数据
       * 
       * @param list
       */
      public abstract void insertBatch(ListDBObject> list);
      /**
       * 按照条件参数集合map,删除数据
       * 
       * @param map
       */
      public abstract void delete(DBObject obj);
      /**
       * 按照多种条件的并集,批量删除数据
       * 
       * @param list
       */
      public abstract void deleteBatch(ListDBObject> list);
      /**
       * 得到Collection()总的记录数
       * 
       * @return
       */
      public abstract long getCollectionCount();
      public abstract long getCount(DBObject query);
      public abstract ListDBObject> find(DBObject query);
      public abstract ListDBObject> find(DBObject query,DBObject sort);
      public abstract ListDBObject> find(DBObject query,DBObject sort,int start,int limit);
      /**
       * 根据whereFields参数,更新setFields值
       * 
       * @param setFields
       * @param whereFields
       */
      public abstract void update(DBObject setFields,
          DBObject whereFields);
      public abstract ListDBObject> findAll();
      /**
       * 根据ID找到唯一数据 有1个id字段标记
       * 
       * @param id
       * @return
       */
      public abstract DBObject getById(String id);
      /**
       * 获取所有数据库名称
       * 
       * @return
       */
      public ListString> getAllDBNames();
      public abstract String getDbName();
      public abstract void setDbName(String dbName);
      public abstract DB getDb();
      public abstract String getCollName();
      public abstract void setCollName(String collName);
    }
    
    

    MongoServiceImpl.java

    /************************* 版权声明 *********************************
     *                                                               *
     *           版权所有:百洋软件                                                    *
     *     Copyright (c) 2010 by www.po-soft.com                        *
     *                                                               *
     ************************* 变更记录 *********************************
     *
     * 创建者:yongtree  创建日期: 2010-7-7
     * 备注:
     * 
     * 修改者:    修改日期:
     * 备注:
     * 
     */
    package com.posoftframework.mongodb;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    import org.bson.types.ObjectId;
    import com.mongodb.BasicDBObject;
    import com.mongodb.DB;
    import com.mongodb.DBCollection;
    import com.mongodb.DBCursor;
    import com.mongodb.DBObject;
    /**
     * 
     * @author yongtree
     * @date 2010-7-7 下午07:22:15
     * @version 1.0
     */
    public class MongoServiceImpl implements MongoService {
      private String dbName;
      private String collName;
      private DB db;
      public MongoServiceImpl(String dbName, String collName) {
        this.dbName = dbName;
        this.collName = collName;
        try {
          db = MongoDBConfig.getDBByName(this.dbName);
        } catch (Throwable e) {
          e.printStackTrace();
        }
      }
      public MongoServiceImpl() {
        getDb();
      }
      public DBCollection getCollection() {
        return db.getCollection(this.collName);
      }
      public DBObject map2Obj(MapString, Object> map) {
        DBObject obj = new BasicDBObject();
        if (map.containsKey("class")  map.get("class") instanceof Class)
          map.remove("class");
        obj.putAll(map);
        return obj;
      }
      public DBObject insert(DBObject obj) {
        getCollection().insert(obj);
        return obj;
      }
      public void insertBatch(ListDBObject> list) {
        if (list == null || list.isEmpty()) {
          return;
        }
        ListDBObject> listDB = new ArrayListDBObject>();
        for (int i = 0; i  list.size(); i++) {
          listDB.add(list.get(i));
        }
        getCollection().insert(listDB);
      }
      public void delete(DBObject obj) {
        getCollection().remove(obj);
      }
      public void deleteBatch(ListDBObject> list) {
        if (list == null || list.isEmpty()) {
          return;
        }
        for (int i = 0; i  list.size(); i++) {
          getCollection().remove(list.get(i));
        }
      }
      public long getCollectionCount() {
        return getCollection().getCount();
      }
      public long getCount(DBObject obj) {
        if (obj != null)
          return getCollection().getCount(obj);
        return getCollectionCount();
      }
      public ListDBObject> find(DBObject obj) {
        DBCursor cur = getCollection().find(obj);
        return DBCursor2list(cur);
      }
      @Override
      public ListDBObject> find(DBObject query, DBObject sort) {
        DBCursor cur;
        if (query != null) {
          cur = getCollection().find(query);
        } else {
          cur = getCollection().find();
        }
        if (sort != null) {
          cur.sort(sort);
        }
        return DBCursor2list(cur);
      }
      @Override
      public ListDBObject> find(DBObject query, DBObject sort, int start,
          int limit) {
        DBCursor cur;
        if (query != null) {
          cur = getCollection().find(query);
        } else {
          cur = getCollection().find();
        }
        if (sort != null) {
          cur.sort(sort);
        }
        if (start == 0) {
          cur.batchSize(limit);
        } else {
          cur.skip(start).limit(limit);
        }
        return DBCursor2list(cur);
      }
      private ListDBObject> DBCursor2list(DBCursor cur) {
        ListDBObject> list = new ArrayListDBObject>();
        if (cur != null) {
          list = cur.toArray();
        }
        return list;
      }
      public void update(DBObject setFields, DBObject whereFields) {
        getCollection().updateMulti(setFields, whereFields);
      }
      public ListDBObject> findAll() {
        DBCursor cur = getCollection().find();
        ListDBObject> list = new ArrayListDBObject>();
        if (cur != null) {
          list = cur.toArray();
        }
        return list;
      }
      public DBObject getById(String id) {
        DBObject obj = new BasicDBObject();
        obj.put("_id", new ObjectId(id));
        DBObject result = getCollection().findOne(obj);
        return result;
      }
      public String getDbName() {
        return dbName;
      }
      public void setDbName(String dbName) {
        this.dbName = dbName;
        this.db = MongoDBConfig.getDBByName(this.dbName);
      }
      public String getCollName() {
        return collName;
      }
      public void setCollName(String collName) {
        this.collName = collName;
      }
      public DB getDb() {
        if (this.db == null) {
          if (this.dbName == null) {
            this.db = MongoDBConfig.getDB();
          } else {
            this.db = MongoDBConfig.getDBByName(this.dbName);
          }
        }
        return this.db;
      }
      public ListString> getAllDBNames() {
        return MongoDBConfig.getDBNames();
      }
    }
    

    您可能感兴趣的文章:
    • Java的idea连接mongodb数据库的详细教程
    • Java操作MongoDB数据库方法详解
    • Java单例模式下的MongoDB数据库操作工具类
    • Java操作Mongodb数据库实现数据的增删查改功能示例
    • 【MongoDB for Java】Java操作MongoDB数据库
    • java实现mongodb的数据库连接池
    • Java操作MongoDB数据库的示例代码
    上一篇:MongoDB使用指南--基本操作
    下一篇:MySQL和MongoDB设计实例对比分析
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Java操作MongoDB数据库示例分享 Java,操作,MongoDB,数据库,