`
yu120
  • 浏览: 81554 次
社区版块
存档分类
最新评论

Java通用方法MongoDB

阅读更多
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
  
import org.apache.log4j.Logger;
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;
import com.mongodb.Mongo;
import com.mongodb.MongoException;
  
/**
* MongoDB Manager
*
*/
public class MongoDBManager {
     private static Logger log = Logger.getLogger(MongoDBManager.class);
     
     private static Mongo mg = null;
     private static DB db = null;
     
     private final static MongoDBManager instance = new MongoDBManager();
     
     /**
     * 实例化
     * @return
     * @throws Exception
     */
     public static MongoDBManager getInstance() throws Exception {
            return instance;
     }
     
     static {
          try {
               mg = new Mongo(HOST, PORT);
              db=mg.getDB(DB);
          } catch (Exception e) {
               log.error("Can't connect MongoDB!");
              e.printStackTrace();
          }
     }
            
     /**
     * 获取集合(表)
     * @param collection
     */
     public static DBCollection getCollection(String collection) {
          return db.getCollection(collection);
     }
  
     /**
     * ----------------------------------分割线--------------------------------------
     */
  
     /**
     * 插入
     * @param collection
     * @param map
     */
     public void insert(String collection , Map<String, Object> map) {
          try {
               DBObject dbObject = map2Obj(map);
               getCollection(collection).insert(dbObject);
          } catch (MongoException e) {
               log.error("MongoException:" + e.getMessage());
          }
     }
  
     /**
     * 批量插入
     * @param collection
     * @param list
     */
     public void insertBatch(String collection ,List<Map<String, Object>> list) {
          if (list == null || list.isEmpty()) {
               return;
          }
          try {
               List<DBObject> listDB = new ArrayList<DBObject>();
               for (int i = 0; i < list.size(); i++) {
                    DBObject dbObject = map2Obj(list.get(i));
                    listDB.add(dbObject);
               }
               getCollection(collection).insert(listDB);
          } catch (MongoException e) {
               log.error("MongoException:" + e.getMessage());
          }
     }
  
     /**
     * 删除
     * @param collection
     * @param map
     */
     public void delete(String collection ,Map<String, Object> map) {
          DBObject obj = map2Obj(map);
          getCollection(collection).remove(obj);
     }
  
     /**
       * 删除全部
       * @param collection
       * @param map
       */
     public void deleteAll(String collection) {
          List<DBObject> rs = findAll(collection);
          if (rs != null && !rs.isEmpty()) {
               for (int i = 0; i < rs.size(); i++) {
                    getCollection(collection).remove(rs.get(i));
               }
          }
     }
  
     /**
     * 批量删除
     * @param collection
     * @param list
     */
     public void deleteBatch(String collection,List<Map<String, Object>> list) {
          if (list == null || list.isEmpty()) {
               return;
          }
          for (int i = 0; i < list.size(); i++) {
               getCollection(collection).remove(map2Obj(list.get(i)));
          }
     }
  
     /**
     * 计算满足条件条数
     * @param collection
     * @param map
     */
     public long getCount(String collection,Map<String, Object> map) {
          return getCollection(collection).getCount(map2Obj(map));
     }
     
     /**
     * 计算集合总条数
     * @param collection
     * @param map
     */
     public long getCount(String collection) {
          return getCollection(collection).find().count();
     }
  
     /**
     * 更新
     * @param collection
     * @param setFields
     * @param whereFields
     */
     public void update(String collection,Map<String, Object> setFields,
               Map<String, Object> whereFields) {
          DBObject obj1 = map2Obj(setFields);
          DBObject obj2 = map2Obj(whereFields);
          getCollection(collection).updateMulti(obj1, obj2);
     }
  
     /**
     * 查找对象(根据主键_id)
     * @param collection
     * @param _id
     */
     public DBObject findById(String collection,String _id) {
          DBObject obj = new BasicDBObject();
          obj.put("_id", ObjectId.massageToObjectId(_id));
          return getCollection(collection).findOne(obj);
     }
  
     /**
     * 查找集合所有对象
     * @param collection
     */
     public List<DBObject> findAll(String collection) {
          return getCollection(collection).find().toArray();
     }
  
     /**
     * 查找(返回一个对象)
     * @param map
     * @param collection
     */
     public DBObject findOne(String collection,Map<String, Object> map) {
          DBCollection coll = getCollection(collection);
          return coll.findOne(map2Obj(map));
     }
  
     /**
     * 查找(返回一个List<DBObject>)
     * @param <DBObject>
     * @param map
     * @param collection
     * @throws Exception
     */
     public List<DBObject> find(String collection,Map<String, Object> map) throws Exception {
          DBCollection coll = getCollection(collection);
          DBCursor c = coll.find(map2Obj(map));
          if (c != null)
               return c.toArray();
          else
               return null;
     }

 

分享到:
评论

相关推荐

    Mongodb连接池for java

    MongoDB是一个流行的开源、分布式文档数据库,常用于处理大规模数据。在Java开发中,与MongoDB的交互通常涉及使用连接池...因此,深入理解连接池的工作原理和配置方法,对于任何MongoDB Java开发者来说都是必要的技能。

    mongodb安装配置及java操作mongodb

    接着,我们有《MongoDB入门需知(for_phper).doc》,虽然文档标题提到的是PHP开发者,但其中的内容对于理解MongoDB的基本概念和操作是通用的。MongoDB的核心概念包括集合(类似关系数据库的表)、文档(JSON格式的...

    java-mongodb底层封装

    - 提高代码复用性:封装通用的操作方法,避免在多个地方重复编写相同的代码。 - 简化API:将复杂的原生驱动调用隐藏,提供更友好的接口,降低学习成本。 - 错误处理:封装错误处理逻辑,提高程序健壮性。 - 扩展...

    MongoDB 在java中的应用 纯Java操作

    ### MongoDB在Java中的应用 #### 一、MongoDB简介与安装步骤 MongoDB是一种非常流行的NoSQL数据库系统,尤其适用于需要处理非结构化或半结构化数据的应用场景。其灵活性和扩展性使得它成为众多开发者的首选。在...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    使用Java基于MongoDB和SpringData应用.docx

    MongoTemplate 是 Spring Data for MongoDB 提供的一个关键工具,它是一个帮助类,用于执行通用的 MongoDB 操作。MongoTemplate 负责文档与 Java 对象(POJO)之间的映射,并且会把数据库访问的异常转换成 Spring 的...

    java操作mongodb时,对象bean和DBObject相互转换的方法(推荐)

    这个方法比手动检查和设置每个字段的类型更简洁、更通用。 3. **注意事项** - 在进行对象转换时,确保Bean的属性名称与MongoDB中的字段名称匹配,否则转换可能会失败。 - 对于复杂类型,如自定义对象或者集合,...

    mongoDB-2.5.3 java驱动源码

    实用工具类的集合,如`MongoIterableImpl`提供了一种通用的可迭代接口,`DocumentToDBObjectConverter`用于在`Document`(BSON库中的类)和`DBObject`(Java驱动中的类)之间转换。 源码分析: - MongoDB Java驱动...

    MongoDB Java Driver 源码分析(1):Package 概述

    MongoDB Java Driver是Java开发者与MongoDB数据库交互的主要工具,它提供了一套全面的API,使得我们可以方便地在Java应用程序中执行查询、插入、更新和删除等操作。本篇文章将聚焦于MongoDB Java Driver的源码分析,...

    MongoDB集群以及日志、异常规范Java代码实例.zip

    在Java中使用MongoDB,通常依赖`mongodb-driver-sync`或`mongodb-driver-reactivestreams`库。以下是一些关键概念: 1. MongoClient:作为与MongoDB服务器的连接,可创建多个MongoClients以连接不同服务器或复制集。...

    spring boot整合mongodb

    6. **版本兼容性**: 文档中提到该demo工程兼容所有版本的MongoDB,这可能意味着它使用了通用的API或者进行了版本兼容性处理。在实际项目中,确保库的版本与MongoDB服务器版本兼容是很重要的,因为不同的MongoDB版本...

    spring mongodb用到的jar包spring-date-mongodb1.4.2.zip

    Spring MongoDB 是一个强大的Java框架,它允许开发人员利用Spring框架的功能来操作MongoDB数据库。这个压缩包`spring-date-mongodb1.4.2.zip`包含了两个核心的JAR文件:`spring-data-mongodb-1.4.2.RELEASE.jar`和`...

    mongodb安装文档和工具类.zip

    2. MongoUtil.java:这是一个通用的MongoDB工具类,很可能提供了对MongoDB数据库进行连接、断开、查询、更新、删除等操作的静态方法。使用这样的工具类可以简化代码,提高代码复用性,并且使得代码更加模块化。 3. ...

    Spring-data + MongoDb源码

    3. **Repository接口**: Spring Data MongoDB提供了一个通用的Repository接口,如`MongoRepository`,它包含了常见的CRUD操作。我们可以定义自己的接口,继承自`MongoRepository`,并添加自定义的方法。这些方法的...

    mongodb.zip

    Spring Data是一个项目,旨在简化数据访问层的开发,提供一套通用的API,支持多种持久化技术,如JPA、MongoDB等。通过Spring Data MongoDB,开发者可以方便地使用注解驱动的方法来执行CRUD操作,查询数据库,并进行...

    spring-data-mongodb api

    - **MongoRepository**:这是一个接口,定义了通用的查询方法,如查找、删除和分页。开发者可以通过继承这个接口并添加自定义方法来扩展功能。 - **MongoEntities**:这些是映射到MongoDB文档的Java对象,通常使用...

    mongodb的实现类及实现接口(包含jar包)

    `IMongoJDBCUtilCJB.java`可能是接口,定义了一些通用的MongoDB操作方法,如连接数据库、执行查询等。`IMongoDBJDBCImp.java`实现了`IMongoDBJDBC`接口,提供了具体的MongoDB操作实现。这样的设计遵循了面向接口编程...

    Java多线程读取大文本文件并批量插入MongoDB的实战代码

    Java多线程读取大文本文件并批量插入MongoDB的代码,文本文件,csv文件,可以结合POI改造使其支持excel。 适合做大量文本数据或日志文件...包含Main方法调用案例,基于接口的通用设计,业务模块可自定义实现具体逻辑。

    Spring集成Mongodb配置含jar包

    3. **Repository抽象**: Spring Data MongoDB引入了Repository抽象,允许开发者定义通用的CRUD操作接口,而无需实现它们。Spring自动为这些接口生成实现,极大地简化了数据访问层的开发工作。 4. **实体类和映射**:...

    spring-data-mongodb-reference 1.5.4

    - **查询创建**:Spring Data MongoDB 可以根据方法名自动解析出查询语句。 - **属性表达式**:可以使用属性表达式来构建更复杂的查询条件。 - **特殊参数处理**:支持特殊参数类型,如 Pageable 和 Sort。 **3.3 ...

Global site tag (gtag.js) - Google Analytics