设为首页 加入收藏

TOP

MongoDB之Java测试代码(DAO层)(一)
2015-11-21 01:52:42 来源: 作者: 【 】 浏览:0
Tags:MongoDB Java 测试 代码 DAO

MongoInit.java是数据库初始化及连接类

MongoUtils.java是对mongodb的各种操作方法

MongoInit.java

package com.wlwcloud.datatest;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Properties;

import org.apache.log4j.Logger;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.Mongo;
import com.mongodb.MongoOptions;
import com.mongodb.ServerAddress;

/**
 * Mongo工具类:设计为单例模式,每当月份发生变化,数据库连接名称就会发生变化,这是业务规则 因MongoDB的Java驱动是线程安全的,对于一般的应用,只要一个Mongo实例即可,Mongo有个内置的连接池(池大小默认为10个)。
 * 对于有大量写和读的环境中,为了确保在一个Session中使用同一个DB时,我们可以用以下方式保证一致性: DB mdb =mongo.getDB('dbname'); mdb.requestStart(); // 业务代码 mdb.requestDone();
 * DB和DBCollection是绝对线程安全的
 * @author undoner
 */
public class MongoInit {
	/** DB监听端口号 */
	private static int DBPort = 27017;
	/** DB连接URL */
	private static String DBUrl = "localhost";
	/** 连接DB库名称 */
	private static String DBName = "wlwdb";
	static Logger log = Logger.getRootLogger();
	private static Mongo mongo;
	private static DBCollection coll;
	private static DB db;

	static {
		try {
			DBproperties();
			MongoOptions options = new MongoOptions();
			options.autoConnectRetry = true;
			options.connectionsPerHost = 1000;
			options.maxWaitTime = 5000;
			options.socketTimeout = 0;
			options.connectTimeout = 15000;
			options.threadsAllowedToBlockForConnectionMultiplier = 5000;
			// 事实上,Mongo实例代表了一个数据库连接池,即使在多线程的环境中,一个Mongo实例对我们来说已经足够了
			ServerAddress serverAddress = new ServerAddress(DBUrl, DBPort);
			mongo = new Mongo(serverAddress, options);
		} catch (UnknownHostException e) {
			log.info("get mongo instance failed");
		}
	}

	static void DBproperties() {
		// 读取配置文件config.properties中的属性值
		String myFilePath = MongoInit.class.getResource("/").getPath() + "MongoDBConfig.properties";
		Properties properties = new Properties();
		FileInputStream fileInputStream = null;
		try {
			   fileInputStream = new FileInputStream(myFilePath);
			   properties.load(fileInputStream);
			   DBPort = Integer.parseInt((String) properties.getProperty("DBPort"));
			   DBUrl = (String) properties.getProperty("DBUrl");
			   DBName = (String) properties.getProperty("DBName");
			  } catch (Exception e) {
			   e.printStackTrace();
			  } finally {
			   try {
			    fileInputStream.close();
			   } catch (IOException e) {
			    // TODO Auto-generated catch block
			    e.printStackTrace();
			   }
		}

	}

	public static DB getDB() {
		if (db == null) {
			db = mongo.getDB(DBName);
		}
		return db;
	}

	public static Mongo getMong() {
		return mongo;
	}

	public static DBCollection getColl(String collname) {
		return getDB().getCollection(collname);
	}

}

?

package com.wlwcloud.datatest;

import java.net.UnknownHostException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.ketayao.ketacustom.entity.main.User;
import com.ketayao.utils.SecurityUtils;
首页 上一页 1 2 3 4 5 下一页 尾页 1/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇mariadb简介 下一篇故障案例:slave延迟很大

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: