zoukankan      html  css  js  c++  java
  • MongoDB初探系列之四:MongoDB与Java共舞

    因为版本号不同,可能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上上手哇。哈哈。

  • 相关阅读:
    利用百度轻松语音合成,语音识别
    python圆周率计算小程序(非常慢)
    python成语接龙小游戏
    在数组添加元素时报错:IndexError: list index out of range
    Redis-jedis的使用
    Shiro整合SpringMVC简单实例(一)
    容器
    防重提交功能(Token技术的引入)
    PageUtil
    单例设计模式
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7081519.html
Copyright © 2011-2022 走看看