mongodb資料庫連接池(java版)

來源:互聯網
上載者:User

標籤:

  • 我用的java驅動為2.13版本
    1. 驅動的為:http://mongodb.github.io/mongo-java-driver/
    2. 對應的API地址為:http://api.mongodb.org/java/2.13/
  • mongodb資料庫介面的設計
package storm.db;import java.util.ArrayList;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBObject;/*** 類名: MongoDBDao* lky*/public interface MongoDBDao {    /**     *      * 方法名:getDb     * lky     * 描述:擷取指定的mongodb資料庫     * @param dbName     * @return     */    public DB getDb(String dbName);    /**     *      * 方法名:getCollection     * lky     * 描述:擷取指定mongodb資料庫的collection集合     * @param dbName    資料庫名     * @param collectionName    資料庫集合名     * @return     */    public DBCollection getCollection(String dbName, String collectionName);    /**     *      * 方法名:inSert     * lky     * 描述:向指定的資料庫中添加給定的keys和相應的values     * @param dbName     * @param collectionName     * @param keys     * @param values     * @return     */    public boolean inSert(String dbName, String collectionName, String keys, Object values);    /**     *      * 方法名:delete     * lky     * 描述:刪除資料庫dbName中,指定keys和相應values的值     * @param dbName     * @param collectionName     * @param keys     * @param values     * @return     */    public boolean delete(String dbName, String collectionName, String keys, Object values);    /**     *      * 方法名:find     * lky     * 描述:從資料庫dbName中取出相應數目的資料     * @param dbName     * @param collectionName     * @param keys     * @param values     * @param num     * @return     */    public ArrayList<DBObject> find(String dbName, String collectionName, int num);    /**     *      * 方法名:update     * lky     * 描述:更新資料庫dbName,用指定的newValue更新oldValue     * @param dbName     * @param collectionName     * @param oldValue     * @param newValue     * @return     */    public boolean update(String dbName, String collectionName, DBObject oldValue, DBObject newValue);    /**     *      * 方法名:isExit     * lky     * 描述:判斷給定的keys和相應的values在指定的dbName的collectionName集合中是否存在     * @param dbName     * @param collectionName     * @param keys     * @param values     * @return     */    public boolean isExit(String dbName, String collectionName, String key, Object value);}
  • 資料庫連接池的實現
package storm.db;import java.net.UnknownHostException;import java.util.ArrayList;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.MongoClient;import com.mongodb.MongoClientOptions;import com.mongodb.ServerAddress;import com.mongodb.WriteResult;/* * mongodb資料庫連結池 */public class MongoDBDaoImpl implements MongoDBDao{    private MongoClient mongoClient = null;    private static final MongoDBDaoImpl mongoDBDaoImpl = new MongoDBDaoImpl();// 餓漢式單例模式    private MongoDBDaoImpl()    {        if (mongoClient == null)        {            MongoClientOptions.Builder buide = new MongoClientOptions.Builder();            buide.connectionsPerHost(100);// 與目標資料庫可以建立的最大連結數            buide.connectTimeout(1000 * 60 * 20);// 與資料庫建立連結的逾時時間            buide.maxWaitTime(100 * 60 * 5);// 一個線程成功擷取到一個可用資料庫之前的最大等待時間            buide.threadsAllowedToBlockForConnectionMultiplier(100);            buide.maxConnectionIdleTime(0);            buide.maxConnectionLifeTime(0);            buide.socketTimeout(0);            buide.socketKeepAlive(true);            MongoClientOptions myOptions = buide.build();            try            {                mongoClient = new MongoClient(new ServerAddress("127.0.0.1", 27017), myOptions);            } catch (UnknownHostException e)            {                e.printStackTrace();            }        }    }    public static MongoDBDaoImpl getMongoDBDaoImpl()    {        return mongoDBDaoImpl;    }    @Override    public DB getDb(String dbName)    {        return mongoClient.getDB(dbName);    }    @Override    public DBCollection getCollection(String dbName, String collectionName)    {        DB db = mongoClient.getDB(dbName);        return db.getCollection(collectionName);    }    @Override    public boolean inSert(String dbName, String collectionName, String keys, Object values)    {        DB db = mongoClient.getDB(dbName);        DBCollection dbCollection = db.getCollection(collectionName);        long num = dbCollection.count();        BasicDBObject doc = new BasicDBObject();        doc.put(keys, values);        dbCollection.insert(doc);        if (dbCollection.count() - num > 0)        {            System.out.println("添加資料成功!!!");            return true;        }        return false;    }    @Override    public boolean delete(String dbName, String collectionName, String keys, Object values)    {        WriteResult writeResult = null;        DB db = mongoClient.getDB(dbName);        DBCollection dbCollection = db.getCollection(collectionName);        BasicDBObject doc = new BasicDBObject();        doc.put(keys, values);        writeResult = dbCollection.remove(doc);        if (writeResult.getN() > 0)        {            System.out.println("刪除資料成功!!!!");            return true;        }        return false;    }    @Override    public ArrayList<DBObject> find(String dbName, String collectionName, int num)    {        int count=num;        ArrayList<DBObject> list = new ArrayList<DBObject>();        DB db = mongoClient.getDB(dbName);        DBCollection dbCollection = db.getCollection(collectionName);        DBCursor dbCursor = dbCollection.find();        if (num == -1)        {            while (dbCursor.hasNext())            {                list.add(dbCursor.next());            }        } else        {            while(dbCursor.hasNext())            {                if(count==0) break;                list.add(dbCursor.next());                count--;            }        }        return list;    }    @Override    public boolean update(String dbName, String collectionName, DBObject oldValue, DBObject newValue)    {        WriteResult writeResult = null;        DB db = mongoClient.getDB(dbName);        DBCollection dbCollection = db.getCollection(collectionName);        writeResult = dbCollection.update(oldValue, newValue);        if (writeResult.getN() > 0)        {            System.out.println("資料更新成功");            return true;        }        return false;    }    @Override    public boolean isExit(String dbName, String collectionName, String key, Object value)    {        DB db = mongoClient.getDB(dbName);        DBCollection dbCollection = db.getCollection(collectionName);        BasicDBObject doc = new BasicDBObject();        doc.put(key, value);        if (dbCollection.count(doc) > 0)        {            return true;        }        return false;    }    public static void main(String args[])    {        MongoDBDaoImpl mongoDBDaoImpl=MongoDBDaoImpl.getMongoDBDaoImpl();        ArrayList<DBObject> list=new ArrayList<DBObject>();        list=mongoDBDaoImpl.find("jd", "phone",-1);        System.out.println(list.size());    }}

註:資料庫連接池的實現是用的單例模式(懶漢式)

mongodb資料庫連接池(java版)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.