java中mongodb中dao通用_MongoDB之Java测试代码(DAO层)

本文介绍了Java中操作MongoDB的两个关键类:MongoInit和MongoUtils。MongoInit用于数据库初始化和连接,实现单例模式,并提供获取DB和集合的方法。MongoUtils则包含各种数据库操作,如获取所有数据库、删除数据库、查询表名、添加记录、创建索引等。这两个类为Java应用与MongoDB的交互提供了便利。
摘要由CSDN通过智能技术生成

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);

}

}

MongoUtils.java

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;

import com.mongodb.AggregationOutput;

import com.mongodb.BasicDBList;

import com.mongodb.BasicDBObject;

import com.mongodb.BasicDBObjectBuilder;

import com.mongodb.DB;

import com.mongodb.DBCollection;

import com.mongodb.DBCursor;

import com.mongodb.DBObject;

import com.mongodb.MapReduceCommand;

import com.mongodb.MapReduceOutput;

import com.mongodb.Mongo;

import com.mongodb.MongoException;

import com.mongodb.QueryBuilder;

import com.mongodb.WriteConcern;

public class MongoUtils {

//DBCursor cursor = coll.find(condition).addOption(Bytes.QUERYOPTION_NOTIMEOUT);//设置游标不要超时

/**

* 获取所有数据库实例

*/

public void testGetDBS() {

List dbnames = MongoInit.getMong().getDatabaseNames();

for (String dbname : dbnames) {

System.out.println(

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值