MongoDB中怎么封装一个操作类
本篇文章给大家分享的是有关MongoDB中怎么封装一个操作类,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
MongoDB操作类封装
mongobase代码如下:
packagecom.fun.mongodb; importcom.fun.frame.SourceCode; importcom.mongodb.MongoClient; importcom.mongodb.MongoClientURI; importcom.mongodb.MongoCredential; importcom.mongodb.ServerAddress; importcom.mongodb.client.MongoCollection; importcom.mongodb.client.MongoDatabase; importorg.bson.Document; importjava.util.Arrays; importjava.util.List; /** *mongo操作类的基础类 */ publicclassMongoBaseextendsSourceCode{ /** *获取服务地址list * *@paramaddresses *@return */ publicstaticList<ServerAddress>getServers(ServerAddress...addresses){ returnArrays.asList(addresses); } /** *获取服务地址 * *@paramhost *@paramport *@return */ publicstaticServerAddressgetServerAdress(Stringhost,intport){ returnnewServerAddress(host,port); } /** *获取认证list * *@paramcredentials *@return */ publicstaticList<MongoCredential>getCredentials(MongoCredential...credentials){ returnArrays.asList(credentials); } /** *获取验证 * *@paramuserName *@paramdatabase *@parampassword *@return */ publicstaticMongoCredentialgetMongoCredential(StringuserName,Stringdatabase,Stringpassword){ returnMongoCredential.createCredential(userName,database,password.toCharArray()); } /** *获取mongo客户端 * *@paramaddresses *@paramcredentials *@return */ publicstaticMongoClientgetMongoClient(List<ServerAddress>addresses,List<MongoCredential>credentials){ returnnewMongoClient(addresses,credentials); } /** *连接mongo数据库 * *@parammongoClient *@paramdatabaseName *@return */ publicstaticMongoDatabasegetMongoDatabase(MongoClientmongoClient,StringdatabaseName){ returnmongoClient.getDatabase(databaseName); } /** *连接mongo集 * *@parammongoDatabase *@paramcollectionName *@return */ publicstaticMongoCollection<Document>getMongoCollection(MongoDatabasemongoDatabase,StringcollectionName){ returnmongoDatabase.getCollection(collectionName); } /** *关闭数据库连接 * *@parammongoClient */ publicstaticvoidMongoOver(MongoClientmongoClient){ mongoClient.close(); } /** *获取mongo客户端对象,通过servers和credentials对象创建 * *@parammongoObject *@return */ publicstaticMongoClientgetMongoClient(MongoObjectmongoObject){ MongoClientmongoClient=newMongoClient(getServers(getServerAdress(mongoObject.host,mongoObject.port)),getCredentials(getMongoCredential(mongoObject.user,mongoObject.database,mongoObject.password))); returnmongoClient; } /** *获取mongo客户端对象,通过uri方式连接 * *@parammongoObject *@return */ publicstaticMongoClientgetMongoClientOnline(MongoObjectmongoObject){ Stringformat=String.format("mongodb://%s:%s@%s:%d/%s",mongoObject.user,mongoObject.password,mongoObject.host,mongoObject.port,mongoObject.database); returnnewMongoClient(newMongoClientURI(format)); } /** *获取collection对象 * *@parammongoObject *@return */ publicstaticMongoCollection<Document>getCollection(MongoObjectmongoObject,StringcollectionName){ returngetMongoClient(mongoObject).getDatabase(mongoObject.database).getCollection(collectionName); } /** *获取collection对象 * *@parammongoObject *@return */ publicstaticMongoCollection<Document>getCollectionOnline(MongoObjectmongoObject,StringcollectionName){ returngetMongoClientOnline(mongoObject).getDatabase(mongoObject.database).getCollection(collectionName); } }
mongoobject的代码如下:
packagecom.fun.mongodb; importcom.mongodb.MongoClient; importcom.mongodb.client.MongoCollection; importorg.bson.Document; /** *mongo数据库配置对象,针对单个数据服务,单个身份验证 */ publicclassMongoObjectextendsMongoBase{ Stringhost; intport; Stringuser; Stringpassword; Stringdatabase; MongoClientmongoClient; /** *创建数据连接 * *@paramhost *@paramport *@paramuser *@parampassword *@paramdatabase */ publicMongoObject(Stringhost,intport,Stringuser,Stringpassword,Stringdatabase){ this.host=host; this.port=port; this.user=user; this.password=password; this.database=database; this.mongoClient=getMongoClient(this); } /** *创建数据库连接 * *@paramport *@paramhost *@paramuser *@parampassword *@paramdatabase */ publicMongoObject(intport,Stringhost,Stringuser,Stringpassword,Stringdatabase){ this.host=host; this.port=port; this.user=user; this.password=password; this.database=database; this.mongoClient=getMongoClientOnline(this); } /** *获取colletion对象 * *@paramcollectionName *@return */ publicMongoCollection<Document>getMongoCollection(StringcollectionName){ MongoClientmongoClientOnline=getMongoClientOnline(this); returnmongoClientOnline.getDatabase(database).getCollection(collectionName); } /** *关闭连接 */ publicvoidover(){ MongoOver(this.mongoClient); } } @Override publicMongoObjectclone(){ returnnewMongoObject(this.host,this.port,this.user,this.password,this.database); } publicMongoObjectclone2(){ returnnewMongoObject(this.port,this.host,this.user,this.password,this.database); }
具体效果非常不错,测试代码如下:
publicstaticvoidmain(String[]args){ MongoObjectready=newMongoObject("*****",5117,"fission_record","fission_record","fission_record"); MongoCollection<Document>app=ready.getMongoCollection("app_logs_20181109"); Documentfirst=app.find().first(); output(first); ready.over(); }
打印内容如下:
Document{{_id=5be4ce052ce01b21b6c26a64, _class=com.fission.next.record.bean.AppRecordBean, user_id=5482, action_type={"gameId":2,"userId":"5482"}, action_extern=DataSta_Game_Starts, client_version=15, client_ip=114.5.146.239, client_imei=UNKNOWN, client_dev=xiaomi-Redmi 5 Plus, client_type=200, server_time=1541721601655, os_name=200, os_version=15, client_time=1541721577025}}
以上就是MongoDB中怎么封装一个操作类,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注博信行业资讯频道。
版权声明
本文仅代表作者观点,不代表博信信息网立场。