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是一个流行的开源、分布式文档数据库,常用于处理大规模数据。在Java开发中,与MongoDB的交互通常涉及使用连接池...因此,深入理解连接池的工作原理和配置方法,对于任何MongoDB Java开发者来说都是必要的技能。
接着,我们有《MongoDB入门需知(for_phper).doc》,虽然文档标题提到的是PHP开发者,但其中的内容对于理解MongoDB的基本概念和操作是通用的。MongoDB的核心概念包括集合(类似关系数据库的表)、文档(JSON格式的...
- 提高代码复用性:封装通用的操作方法,避免在多个地方重复编写相同的代码。 - 简化API:将复杂的原生驱动调用隐藏,提供更友好的接口,降低学习成本。 - 错误处理:封装错误处理逻辑,提高程序健壮性。 - 扩展...
### MongoDB在Java中的应用 #### 一、MongoDB简介与安装步骤 MongoDB是一种非常流行的NoSQL数据库系统,尤其适用于需要处理非结构化或半结构化数据的应用场景。其灵活性和扩展性使得它成为众多开发者的首选。在...
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
MongoTemplate 是 Spring Data for MongoDB 提供的一个关键工具,它是一个帮助类,用于执行通用的 MongoDB 操作。MongoTemplate 负责文档与 Java 对象(POJO)之间的映射,并且会把数据库访问的异常转换成 Spring 的...
这个方法比手动检查和设置每个字段的类型更简洁、更通用。 3. **注意事项** - 在进行对象转换时,确保Bean的属性名称与MongoDB中的字段名称匹配,否则转换可能会失败。 - 对于复杂类型,如自定义对象或者集合,...
实用工具类的集合,如`MongoIterableImpl`提供了一种通用的可迭代接口,`DocumentToDBObjectConverter`用于在`Document`(BSON库中的类)和`DBObject`(Java驱动中的类)之间转换。 源码分析: - MongoDB Java驱动...
MongoDB Java Driver是Java开发者与MongoDB数据库交互的主要工具,它提供了一套全面的API,使得我们可以方便地在Java应用程序中执行查询、插入、更新和删除等操作。本篇文章将聚焦于MongoDB Java Driver的源码分析,...
在Java中使用MongoDB,通常依赖`mongodb-driver-sync`或`mongodb-driver-reactivestreams`库。以下是一些关键概念: 1. MongoClient:作为与MongoDB服务器的连接,可创建多个MongoClients以连接不同服务器或复制集。...
6. **版本兼容性**: 文档中提到该demo工程兼容所有版本的MongoDB,这可能意味着它使用了通用的API或者进行了版本兼容性处理。在实际项目中,确保库的版本与MongoDB服务器版本兼容是很重要的,因为不同的MongoDB版本...
Spring MongoDB 是一个强大的Java框架,它允许开发人员利用Spring框架的功能来操作MongoDB数据库。这个压缩包`spring-date-mongodb1.4.2.zip`包含了两个核心的JAR文件:`spring-data-mongodb-1.4.2.RELEASE.jar`和`...
2. MongoUtil.java:这是一个通用的MongoDB工具类,很可能提供了对MongoDB数据库进行连接、断开、查询、更新、删除等操作的静态方法。使用这样的工具类可以简化代码,提高代码复用性,并且使得代码更加模块化。 3. ...
3. **Repository接口**: Spring Data MongoDB提供了一个通用的Repository接口,如`MongoRepository`,它包含了常见的CRUD操作。我们可以定义自己的接口,继承自`MongoRepository`,并添加自定义的方法。这些方法的...
Spring Data是一个项目,旨在简化数据访问层的开发,提供一套通用的API,支持多种持久化技术,如JPA、MongoDB等。通过Spring Data MongoDB,开发者可以方便地使用注解驱动的方法来执行CRUD操作,查询数据库,并进行...
- **MongoRepository**:这是一个接口,定义了通用的查询方法,如查找、删除和分页。开发者可以通过继承这个接口并添加自定义方法来扩展功能。 - **MongoEntities**:这些是映射到MongoDB文档的Java对象,通常使用...
`IMongoJDBCUtilCJB.java`可能是接口,定义了一些通用的MongoDB操作方法,如连接数据库、执行查询等。`IMongoDBJDBCImp.java`实现了`IMongoDBJDBC`接口,提供了具体的MongoDB操作实现。这样的设计遵循了面向接口编程...
Java多线程读取大文本文件并批量插入MongoDB的代码,文本文件,csv文件,可以结合POI改造使其支持excel。 适合做大量文本数据或日志文件...包含Main方法调用案例,基于接口的通用设计,业务模块可自定义实现具体逻辑。
3. **Repository抽象**: Spring Data MongoDB引入了Repository抽象,允许开发者定义通用的CRUD操作接口,而无需实现它们。Spring自动为这些接口生成实现,极大地简化了数据访问层的开发工作。 4. **实体类和映射**:...
- **查询创建**:Spring Data MongoDB 可以根据方法名自动解析出查询语句。 - **属性表达式**:可以使用属性表达式来构建更复杂的查询条件。 - **特殊参数处理**:支持特殊参数类型,如 Pageable 和 Sort。 **3.3 ...