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