資源簡(jiǎn)介
java操作mongodb的工具類,增刪查改方法
代碼片段和文件信息
package?com.iot.App.utils;
import?java.util.ArrayList;
import?java.util.List;
import?org.apache.commons.logging.Log;
import?org.apache.commons.logging.LogFactory;
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.WriteConcern;
import?com.mongodb.client.FindIterable;
import?com.mongodb.client.MongoCollection;
import?com.mongodb.client.MongoCursor;
import?com.mongodb.client.MongoDatabase;
import?com.mongodb.client.MongoIterable;
import?com.mongodb.client.model.Filters;
import?com.mongodb.client.result.DeleteResult;
/**
?*?MongoDB工具類?Mongo實(shí)例代表了一個(gè)數(shù)據(jù)庫(kù)連接池,即使在多線程的環(huán)境中,一個(gè)Mongo實(shí)例對(duì)我們來(lái)說(shuō)已經(jīng)足夠了
?*?注意Mongo已經(jīng)實(shí)現(xiàn)了連接池,并且是線程安全的。?
?*?設(shè)計(jì)為單例模式,?因?MongoDB的Java驅(qū)動(dòng)是線程安全的,對(duì)于一般的應(yīng)用,只要一個(gè)Mongo實(shí)例即可,
?*?Mongo有個(gè)內(nèi)置的連接池(默認(rèn)為10個(gè))?對(duì)于有大量寫和讀的環(huán)境中,為了確保在一個(gè)Session中使用同一個(gè)DB時(shí),
?*?DB和DBCollection是絕對(duì)線程安全的
?*?
?*?@author?zhoulingfei
?*?@date?2015-5-29?上午11:49:49
?*?@version?0.0.0
?*?@Copyright?(c)1997-2015?NavInfo?Co.Ltd.?All?Rights?Reserved.
?*/
public?enum?MongoDBUtil?{
/**
?*?定義一個(gè)枚舉的元素,它代表此類的一個(gè)實(shí)例
?*/
instance;
// private?static?SystemConfig?systemConfig?=?SystemConfig.getInstance();
private?final?static?Log?log?=?LogFactory.getLog(MongoDBUtil.class);
// private?final?static?String?db_ip?=?systemConfig.getMongodb_ip();
// private?final?static?int?db_port?=?systemConfig.getMongodb_port();
private?MongoClient?mongoClient;
static?{
log.info(“===============MongoDBUtil初始化========================“);
//?從配置文件中獲取屬性值
instance.mongoClient?=?new?MongoClient(“10.12.42.52“?27017);
//?or?to?connect?to?a?replica?set?with?auto-discovery?of?the?primary
//?supply?a?seed?list?of?members
//?List?listHost?=?Arrays.asList(new
//?ServerAddress(“l(fā)ocalhost“?27017)new?ServerAddress(“l(fā)ocalhost“
//?27018));
//?instance.mongoClient?=?new?MongoClient(listHost);
//?大部分用戶使用mongodb都在安全內(nèi)網(wǎng)下,但如果將mongodb設(shè)為安全驗(yàn)證模式,就需要在客戶端提供用戶名和密碼:
//?boolean?auth?=?db.authenticate(myUserName?myPassword);
Builder?options?=?new?MongoClientOptions.Builder();
//?options.autoConnectRetry(true);//?自動(dòng)重連true
//?options.maxAutoConnectRetryTime(10);?//?the?maximum?auto?connect
//?retry?time
options.connectionsPerHost(300);//?連接池設(shè)置為300個(gè)連接默認(rèn)為100
options.connectTimeout(15000);//?連接超時(shí),推薦>3000毫秒
options.maxWaitTime(5000);?//
options.socketTimeout(0);//?套接字超時(shí)時(shí)間,0無(wú)限制
options.threadsAllowedToBlockForConnectionMultiplier(5000);//?線程隊(duì)列數(shù),如果連接線程排滿了隊(duì)列就會(huì)拋出“Out
//?of
//?semaphores
//?to?get
//?db”錯(cuò)誤。
options.writeConcern(WriteConcern.SAFE);//
options.build();
}
//?------------------------------------共用方法---------------------------------------------------
/**
?*?獲取DB實(shí)例?-?指定DB
?*?
?*?@param?dbName
?*?@return
?
- 上一篇:李興華視頻
- 下一篇:sqljdbc Jar包
評(píng)論
共有 條評(píng)論