MongoDB组件util

MongonDB组件开发,针对MongoDB的api二次开发,便于统一调用、管理。代码已更新到github,点击跳转一、引入POM<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation=...
摘要由CSDN通过智能技术生成

MongonDB组件开发,针对MongoDB的api二次开发,便于统一调用、管理。

代码已更新到github,点击跳转

 一、引入POM

<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.my.mongodb</groupId>

<artifactId>my-mongodb</artifactId>

<version>1.0-SNAPSHOT</version>

<packaging>jar</packaging>

<name>my-mongodb</name>

<url>http://maven.apache.org</url>



<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

</properties>



<dependencies>

<dependency>

<groupId>org.mongodb</groupId>

<artifactId>mongo-java-driver</artifactId>

<version>3.1.0</version>

</dependency>

<dependency>

<groupId>org.mongodb</groupId>

<artifactId>bson</artifactId>

<version>3.1.0</version>

</dependency>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

</dependencies>

</project>

 二、配置mongoDB的数据库配置

 

(1)在Tomcat下 commoncfg/dbconf/文件夹中引入mongodb.properties文件

(2)文件内容如下:

 

#服务器地址mongodb://开头   服务器地址为mongodb的服务器地址  注意端口及ip是否和你环境一致
mongo.uri=mongodb://127.0.0.1:27017
#每个主机答应的连接数(每个主机的连接池大小),当连接池被用光时,会被阻塞住 ,默以为10 --int
mongo.connectionsPerHost=50
#数据库名   
mongo.databaseName=mymongo    

三、mongoDB组件java类开发

   定义包含初始化数据库、CRUD等功能基础类

package com.my.mongodb.dao;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import org.bson.Document;
import org.bson.conversions.Bson;
import org.bson.types.ObjectId;

import com.mongodb.BasicDBObject;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientOptions.Builder;
import com.mongodb.MongoClientURI;
import com.mongodb.WriteConcern;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoCursor;
import com.mongodb.client.model.Filters;
import com.mongodb.client.result.DeleteResult;
import com.mongodb.client.result.UpdateResult;
import com.my.mongodb.enums.MongoOperation;

/**
 * @Title MongoDbDao.java
 * @Description MongoDb Dao层服务类
 * @author night
 * @date 2015年12月30日 上午10:51:06
 * @version V1.0
 */
public enum MongoDbDao {
	/**
	 * 定义一个枚举的元素,它代表此类的一个实例
	 */
	INSTANCE;

	private MongoClient mongoClient;
	/**
	 * 指定默认数据库
	 */
	private static String DEFAULTDBNAME;
	/**
	 * 获取tomcat路径
	 */
	private static String LOADPATH = "catalina.home";
	/**
	 * mongodb配置文件相对路径
	 */
	private static String CONFIG_PATH = "commoncfg/dbconf/mongodb.properties";// tomcat 环境地址 catalina.home 值/Users/night/Documents/apache-tomcat-7.0
	
	static {

		System.out.println("MongoDb初始化================Begin");
		// 获取系统变量
		Properties sysProperties = System.getProperties();
		// 获取MongoDb配置路径
		String uri = sysProperties.getProperty(LOADPATH) + File.separator + CONFIG_PATH;
		System.out.println(uri);
		// 加载配置路径
		Properties properties = new Properties();
//		InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(uri);//这种方式按上述路径无法加载到文件
		InputStream inputStream = null;
		
		try {
			inputStream = new FileInputStream(uri);
			System.out.println(inputStream);
			properties.load(inputStream);
			
			for(Iterator<Object> itr = properties.keySet().iterator();itr.hasNext();){  
	            String key = (String) itr.next();  
	            System.out.println(key + "=" + properties.get(key));  
	        }  
			
			/* 将配置文件中的配置进行对应设置 */

			DEFAULTDBNAME = properties.getProperty("mongo.databaseName");

			Builder builder = new MongoClientOptions.Builder();
			String perHost = properties.getProperty("mongo.connectionsPerHost");
			builder.connectionsPerHost(Integer.parseInt(perHost));
			builder.writeConcern(WriteConcern.SAFE);// WriteConcern.SAFE:抛出网络错误异常、服务器错误异常;并等待服务器完成写操作。

			String clientURI = properties.getProperty("mongo.uri");
			if (clientURI == null || "".equals(clientURI)) {
				throw new java.lang.IllegalArgumentException("mongo.uri 不能为空!");
			}

			MongoClientURI mongoClientURI = new MongoClientURI(clientURI,builder);
			INSTANCE.mongoClient = new MongoClient(mongoClientURI);
		} catch (Exception e) {
			throw new RuntimeException("load resource fail, uri:" + uri
					+ " errorMsg:" + e.getMessage(), e);
		} finally {
			if (inputStream != null) {
				try {
					inputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		System.out.println("MongoDb初始化================end");

	}

	/**
	 * 
	 * @Title getCollection
	 * @Description 获取指定数据库的指定表 
	 * @param dbName
	 *            数据库名称
	 * @param collName
	 *            表名称
	 * @return {@link }
	 * @since 2015年12月30日 下午3:13:37
	 */
	public MongoCollection<Document> getCollection(String dbName,String collName) {
		if (null == collName || "".equals(collName)) {
			return null;
		}
		if (null == dbName || "".equals(dbName)) {
			return null;
		}
		MongoCollection<Document> collection = mongoClient.getDatabase(dbName).getCollection(collName);
		return collection;
	}
	/**
	 * 
	 * @Title getDefaultCollection
	 * @Description 获取默认数据库表  
	 * @param collName	表名称
	 * @return 
	 * {@link }
	 * @since 2015年12月30日 下午4:08:40
	 */
	public MongoCollection<Document> getDefaultCollection(String collName) {
		if (null == collName || "".equals(collName)) {
			return null;
		}
		MongoCollection<Document> collection = mongoClient.getDatabase(DEFAULTDBNAME).getCollection(collName);
		return collection;
	}
	/**
	 * 
	 * @Title findById
	 * @Description 通过id查询  
	 * @param coll	表
	 * @param id	主键  mongodb默认主键名称为‘_id’ 无法修改
	 * @return 
	 * {@link }
	 * @since 2015年12月30日 下午3:25:39
	 */
	public Document findById(MongoCollection<Document> coll, String id) {
		ObjectId _idobj = null;
		try {
			_idobj 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值