java操作mongoDB实现CURD

来源:互联网 发布:无线鼠标推荐 知乎 编辑:程序博客网 时间:2024/05/01 21:54

java操作mongoDB
mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量、高并发、弱事务的互联网应用,MongoDB可以应对自如。接触到mongoDB 参考了下api实现了增删改查、mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了。直接贴码:

DataTest.java

package com.zk.db;import java.net.UnknownHostException;import java.util.ArrayList;import java.util.List;import org.bson.types.ObjectId;import org.junit.Test;import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBCursor;import com.mongodb.DBObject;import com.mongodb.Mongo;import com.mongodb.MongoException;/** * 测试mongodb curd * @author zk * @time   2015年4月24日23:19:15 */public class DataTest {    // 1.建立一个Mongo的数据库连接对象    static Mongo connection = null;    // 2.创建相关数据库的连接    static DB db = null;    static {        try {            connection = new Mongo("127.0.0.1:27017"); //默认链接地址        } catch (Exception e) {            e.printStackTrace();        }        db = connection.getDB("one");//获取数据库名称    }    /**     * 测试创建数据文档集合 类似 数据表 person     * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test1() throws UnknownHostException, MongoException {        // 实例化        MongoDb mongoDb = new MongoDb("one");        mongoDb.createCollection("person");    }    /**     * 测试添加一条记录     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test2() throws UnknownHostException, MongoException {        // 实例化        DBObject p1 = new BasicDBObject();        p1.put("name", "zk00");        insert(p1, "person");    }    /**     * 测试添加一条记录     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test3() throws UnknownHostException, MongoException {        List<DBObject> dbObjects = new ArrayList<DBObject>();        DBObject zs = new BasicDBObject("name", "zhaosi");        DBObject zq = new BasicDBObject("name", "zhuqi");        dbObjects.add(zs);        dbObjects.add(zq);        insertBatch(dbObjects, "person");    }    /**     * 测试 根据id 删除一条记录     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test4() throws UnknownHostException, MongoException {        deleteById("553a5accb9d133bcf4056a40", "person");    }    /**     * 测试 根据条件 删除     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test5() throws UnknownHostException, MongoException {        DBObject obj = new BasicDBObject();        obj.put("name", "zk00");        int count = deleteByDbs(obj, "person");        System.out.println("删除数据的条数是: " + count);    }    /**     * 测试 更新操作     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test6() throws UnknownHostException, MongoException {        DBObject obj = new BasicDBObject();        obj.put("name", "zhaosi");        DBObject update = new BasicDBObject();        update.put("$set", new BasicDBObject("name", "nn1"));        update(obj, update, false, true, "person");    }    /**     * 测试 查询出person集合中的name     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test7() throws UnknownHostException, MongoException {        DBObject keys = new BasicDBObject();        keys.put("_id", false);        keys.put("name", true);        DBCursor cursor = find(null, keys, "person");        while (cursor.hasNext()) {            DBObject object = cursor.next();            System.out.println(object.get("name"));        }    }    /**     * 测试 分页     *      * @throws UnknownHostException     * @throws MongoException     */    @Test    public void test8() throws UnknownHostException, MongoException {        DBCursor cursor = find(null, null, 0, 6, "person");        while (cursor.hasNext()) {            DBObject object = cursor.next();            System.out.print("name=" + object.get("name") + "  ");            System.out.println("_id=" + object.get("_id"));        }    }    /**     * 创建一个数据库集合     *      * @param collName     *            集合名称     * @param db     *            数据库实例     */    public void createCollection(String collName) {        DBObject dbs = new BasicDBObject();        db.createCollection("person", dbs);    }    /**     * 为相应的集合添加数据     *      * @param dbs     * @param collName     */    public void insert(DBObject dbs, String collName) {        // 1.得到集合        DBCollection coll = db.getCollection(collName);        // 2.插入操作        coll.insert(dbs);    }    /**     * 为集合批量插入数据     *      * @param dbses     * @param collName     */    public void insertBatch(List<DBObject> dbses, String collName) {        DBCollection coll = db.getCollection(collName);        coll.insert(dbses);    }    /**     * 根据id删除数据     *      * @param id     * @param collName     * @return 返回影响的数据条数     */    public int deleteById(String id, String collName) {        DBCollection coll = db.getCollection(collName);        DBObject dbs = new BasicDBObject("_id", new ObjectId(id));        int count = coll.remove(dbs).getN();        return count;    }    /**     * 根据条件删除数据     *      * @param id     * @param collName     * @return 返回影响的数据条数     */    public int deleteByDbs(DBObject dbs, String collName) {        DBCollection coll = db.getCollection(collName);        int count = coll.remove(dbs).getN();        return count;    }    /**     * 更新数据     *      * @param find     *            查询器     * @param update     *            更新器     * @param upsert     *            更新或插入     * @param multi     *            是否批量更新     * @param collName     *            集合名称     * @return 返回影响的数据条数     */    public int update(DBObject find, DBObject update, boolean upsert,            boolean multi, String collName) {        DBCollection coll = db.getCollection(collName);        int count = coll.update(find, update, upsert, multi).getN();        return count;    }    /**     * 查询(分页)     * @param ref     * @param keys     * @param start     * @param limit     * @return     */    public DBCursor find(DBObject ref, DBObject keys, int start, int limit,            String collName) {        DBCursor cur = find(ref, keys, collName);        return cur.limit(limit).skip(start);    }    /**     * 查询 (不分页)     * @param ref     * @param keys     * @param start     * @param limit     * @param collName     * @return     */    public DBCursor find(DBObject ref, DBObject keys, String collName) {        DBCollection coll = db.getCollection(collName);        DBCursor cur = coll.find(ref, keys);        return cur;    }}

注意:connection.close();最后别忘记调用,另外 做过java的同学都知道连接池 以及释放回收链接问题。mongodb自动内部实现了连接池。不需要再考虑该问题,也可以自行实现设置。

0 0