每日一貼,今天的內(nèi)容關(guān)鍵字為對(duì)象類
????對(duì)于MongoDB的Java動(dòng)驅(qū), 從2.10.0版本后,文檔中提示Mongo類將會(huì)被除廢,當(dāng)初開始都勵(lì)鼓應(yīng)用MongoClient類。
????上面演示一個(gè)Java程序如何應(yīng)用最新的MongoClient類來對(duì)MongoDB寫作操。
????首先假設(shè)已經(jīng)有了一個(gè)Replica-set群集,分別是d1, d2和 d3三臺(tái)虛擬機(jī)。
????然后建創(chuàng)一個(gè)Maven構(gòu)建的Java應(yīng)用程序。應(yīng)用了maven exec plugin用來便利行執(zhí)jar包和定制參數(shù)。
????看一下pom.xml:
<build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <executions> <execution> <goals> <goal>java</goal> </goals> </execution> </executions> <configuration> <mainClass>org.freebird.dbtool.App</mainClass> <arguments> <argument>d1,d2,d3</argument> </arguments> </configuration> </plugin> </plugins> </build>
????傳遞了三個(gè)參數(shù),間中用,離隔,分別是不同的機(jī)主名稱:d1, d2, d3.
????看看代碼初始化分部:
public static void main(String[] args) throws UnknownHostException { System.out.println(args[0]); String[] hosts = args[0].split(","); int portNumber = 27017; System.out.println(hosts[0]); System.out.println(hosts[1]); System.out.println(hosts[2]); MongoClient client = new MongoClient(Arrays.asList(new ServerAddress(hosts[0], portNumber), new ServerAddress(hosts[1], portNumber), new ServerAddress(hosts[2], portNumber))); MyApp.getInstance().setDbName("kaimei"); MyApp.getInstance().setClient(client);
????這里將三個(gè)host用,分割開后,建創(chuàng)三個(gè)ServerAddress對(duì)象,然后構(gòu)建MongoClient對(duì)象。
????同時(shí)建創(chuàng)了一個(gè)MyApp的singleton對(duì)象,寄存這個(gè)MongoClient對(duì)象,并供給了getDB()便利后日獲得數(shù)據(jù)庫(kù)連接。
public class MyApp { private MyApp() { } public static MyApp getInstance() { return MyAppHolder.INSTANCE; } private static class MyAppHolder { private static final MyApp INSTANCE = new MyApp(); } @Getter @Setter String dbName; @Setter MongoClient client; public DB getDB() { return client.getDB(dbName); } }
????后以在任何地方要需應(yīng)用連接的時(shí)候,這樣應(yīng)用:
public static void bind(final String address, final String userId) { DB db = MyApp.getInstance().getDB(); DBCollection collection = db.getCollection(DISPLAY_COLLECTION); DBObject condition = new BasicDBObject(); condition.put("address", address); DBObject field = new BasicDBObject(); field.put("user_id", new ObjectId(userId)); DBObject set = new BasicDBObject(); set.put("$set", field); collection.update(condition, set, false, false); }
????很簡(jiǎn)單吧。
文章結(jié)束給大家分享下程序員的一些笑話語錄: 《諾基亞投資手機(jī)瀏覽器UCWEB,資金不詳或控股》杯具了,好不容易養(yǎng)大的閨女嫁外國(guó)。(心疼是你養(yǎng)的嗎?中國(guó)創(chuàng)業(yè)型公司創(chuàng)業(yè)初期哪個(gè)從國(guó)有銀行貸到過錢?)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
