您的位置:首页 > 数据库 > Mongodb

MongoDB初探系列之四:MongoDB与Java共舞

2015-08-01 22:13 621 查看
由于版本不同,可能API也有所不同,本次学习用的是3.0版本。

1、使用的mongodb的jdbc驱动版本为:mongo-java-driver-3.0.0.jar

2、本节只是简单介绍JDBC操作,暂时不考虑效率问题。

3、封装的工具类代码如下:

public class MongoDBProxy {

private static MongoDBProxy proxy=null;//单实例
private static MongoDatabase db=null;//数据库连接对象
private static String [] paramArray=new String[5];//数据库连接参数
private MongoDBProxy(){

}
static{
paramArray[0]="username";
paramArray[1]="password";
paramArray[2]="host";
paramArray[3]="port";
paramArray[4]="databaseName";
}
/**
* 得到MongoDBProxy
* 采用系统默认配置
*/
public static MongoDBProxy getMongoDBProxy(){
if(proxy==null){
proxy=new MongoDBProxy();
String sURI = String.format("mongodb://%s:%s@%s:%d/%s",paramArray[0],paramArray[1],paramArray[2],Integer.parseInt(paramArray[3]),paramArray[4]);
MongoClientURI uri = new MongoClientURI(sURI);
MongoClient mongoClient = new MongoClient(uri);
db= mongoClient.getDatabase(paramArray[4]);
}
return proxy;
}
/**
* 批量查询数据
* @param table  集合名称
* @param page   分页参数
* @param filter 过滤条件
* @param sort   排序条件
*/
public  Page findDocList(String table,Page page,Bson filter,Bson sort){
MongoCollection<Document>  coll=db.getCollection(table);
long count=coll.count(filter);//根据过滤条件获取数据总量
Page p=PageUtil.createPage(page,Integer.parseInt(String.valueOf(count)));
p.setFromUrl((page.getFromUrl()==null)?"":page.getFromUrl());
p.setParamString((page.getParamString()==null)?"":page.getParamString());
FindIterable<Document> resultIterable=coll.find();
//执行条件过滤
resultIterable=resultIterable.sort(sort).filter(filter).skip(p.getBeginIndex()).batchSize(p.getEveryPage());
MongoCursor<Document> cousor=resultIterable.iterator();
List<Document> dataList=new ArrayList<Document>();
while(cousor.hasNext()){
dataList.add(cousor.next());
}
p.setDataList(dataList);
return PageUtil.buildPageString(p);
}
/**
* 获取单个文档
* @param table  集合名称
* @param filter 过滤条件
* @param sort   排序条件
*/
public  Document findOneDoc(String table,Bson filter,Bson sort){
MongoCollection<Document>  coll=db.getCollection(table);
FindIterable<Document> resultIterable=coll.find();
if(sort!=null){
resultIterable.sort(sort);
}
if(filter!=null){
resultIterable.filter(filter);
}
return resultIterable.first();
}
/**
* 添加文档
* @param table 集合名称
* @prama doc   文档内容
*/
public  void addDocument(String table,Document doc){
MongoCollection<Document> coll=getCollection(table);
coll.insertOne(doc);
}
/**
* 批量添加文档
* @param table     集合名称
* @prama docList   文档集合
*/
public  void addDocumentList(String table,List<Document> docList){
MongoCollection<Document> coll=getCollection(table);
coll.insertMany(docList);
}
/**
* 更新文档
* @param table  集合名称
* @param query  查询条件
* @param up     更新数据
*/
public  UpdateResult updateDocument(String table,Bson query,Bson up){
MongoCollection<Document> coll=getCollection(table);
return coll.updateOne(query,up);
}
/**
* 替换文档
* @param table  集合名称
* @param query  查询条件
* @param up     替换的文件对象
*/
public  UpdateResult replaceDocument(String table,Bson query,Document up){
MongoCollection<Document> coll=getCollection(table);
return coll.replaceOne(query, up);
}
/**
* 删除文档
* @param table  集合名称
* @param delete 删除条件
*/
public  DeleteResult deleteDocument(String table,Bson delete){
MongoCollection<Document> coll=getCollection(table);
return coll.deleteOne(delete);
}
/**
* 获取集合对象
* @param table  集合名称
*/
private  MongoCollection<Document>  getCollection(String table){
return db.getCollection(table);
}
}


4、调用demo

MongoDBProxy proxy=MongoDBProxy.getMongoDBProxy();
System.out.println(proxy.findOneDoc("users",null,null).get("_id"));
Document doc=new Document();
doc.put("user","李四");
proxy.addDocument("users", doc);
Bson bson=new BasicDBObject("user","张三");
proxy.deleteDocument("users", bson);


后续再深入学习,先用demo上上手哇,哈哈。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb java 数据库