[MongoDB学习日志]Java对MongoDB的CRUD操作

说起Java操作数据库自然会想到Sun的知名品牌JDBC,对于MongoDB这样的NoSQL数据库,暂时没有像JDBC这样的标准。这篇文章中对目前的形势做了分析和憧憬http://www.

  说起java操作数据库自然会想到sun的知名品牌jdbc,,对于mongodb这样的nosql数据库,暂时没有像jdbc这样的标准。

  这篇文章中对目前的形势做了分析和憧憬

立即学习“Java免费学习笔记(深入)”;

  回到正题记录下熟悉MongoDB为Java语言提供的操作接口mongo-java-driver.jar

立即学习“Java免费学习笔记(深入)”;

  1.基本的根基不变,连接数据库

  2.基本的数据库操作不变,CRUD

  3.变化的是提供的接口,实现类名,操作对象大不相同

  4.变化的是没有标准的Java操作MongoDB的标准API

立即学习“Java免费学习笔记(深入)”;

  MongoDB提供的Java操作API可以说是对Mongo数据库命令的Java翻译,熟悉Mongo命令,熟悉Java操作数据库的基本思路,很容易掌握基本操作。

立即学习“Java免费学习笔记(深入)”;

  数据库连接

package com.im;public final class SystemConstant {public static final class Configure {public static final String HOST = “127.0.0.1”;public static final int PORT = 27017;public static final String USERNAME = “”;public static final String PASSWORD = “”;public static final String DATABASE = “im”;}}package com.im;import java.net.UnknownHostException;import com.mongodb.Mongo;import com.mongodb.MongoException;public class MongoFactory {private static MongoFactory mongoFactory;private MongoFactory() {}public static MongoFactory getInstance() {if (mongoFactory == null) {mongoFactory = new MongoFactory();}return mongoFactory;}public Mongo getMongo() {Mongo mongo = null;try {mongo = new Mongo(SystemConstant.Configure.HOST,SystemConstant.Configure.PORT);} catch (UnknownHostException e) {e.printStackTrace();} catch (MongoException e) {e.printStackTrace();}return mongo;}}

立即学习“Java免费学习笔记(深入)”;

      数据库链接少不了的主机名,端口号,数据库名称。上面代码中的Mongo对象就相当与Connection对象。

立即学习“Java免费学习笔记(深入)”;

数据库的操作

下面的每个方法代表一个方面的测试

测试类初始化方法:

private static BaseDao dao;@BeforeClasspublic static void start() {dao = new BaseDao(“users”,”uf”);}

关于BaseDao是对Mongo操作数据库的基本常用的方法做了封装的一个DAO对象,代码会在本文末尾附上。

立即学习“Java免费学习笔记(深入)”;

    插入:

立即学习“Java免费学习笔记(深入)”;

// 添加一条记录public void test1() {BasicDBObject jo = new BasicDBObject();jo.put(“_id”, “00001”);jo.put(“name”, “Tomcat”);jo.put(“age”, 22);jo.put(“interest”, new String[] { “swimming”, “Taiji”, “football” });int actual = dao.insert(jo);System.out.println(actual);Assert.assertEquals(1, actual);}

立即学习“Java免费学习笔记(深入)”;

// 添加多条记录public void test2() {int actual = 0;int size = 0;for (int i = 2; i

立即学习“Java免费学习笔记(深入)”;

立即学习“Java免费学习笔记(深入)”;

   BasicDBObject对象是Mongo的BSONObject的基本实现类,而BSONObject对象正是Key-Value的形式的Map保存到数据库中。

   基本的查询(主键查询,查询集合,条件查询)

// 查询指定编号的记录public void test3() {BasicDBObject query = new BasicDBObject();query.put(“_id”, “00001”);List dboList = dao.query(query);System.out.println(dboList.get(0).toString());Assert.assertEquals(1, dboList.size());}// 模糊查询,统计记录结果数量public void test4() {BasicDBObject query = new BasicDBObject();query.put(“interest”, new String[] { “swimming”, “Taiji” });long count = dao.getCount(query);Assert.assertEquals(9, count);}// 模块查询,查询结果集合public void test5() {BasicDBObject query = new BasicDBObject();query.put(“interest”, new String[] { “swimming”, “Taiji” });List dboList = dao.query(query);for (DBObject jo : dboList) {System.out.println(jo.toString());}Assert.assertEquals(9, dboList.size());}

  下面是插入数据后的数据库的数据情况,图中数据是各种测试后的数据,不完全对于每个方法的操作后数据库情况。

更新操作

     Mongo更新操作要准备两个BasicDBObject对象,一个是要更新的对象,另一个是更新后的对象。

// 更新指定记录的信息public void test6() {BasicDBObject query = new BasicDBObject();query.put(“_id”, “00001”);BasicDBObject jo = new BasicDBObject();jo.put(“_id”, “00001”);jo.put(“name”, “Jackson”);jo.put(“interest”, new String[] { “Song”, “Taiji”, “Running” });jo.put(“firends”,new BasicDBObject[] {(BasicDBObject) dao.query(new BasicDBObject(“_id”, “00002”)).get(0),(BasicDBObject) dao.query(new BasicDBObject(“_id”, “00002”)).get(0) });int actual = dao.update(query, jo);Assert.assertEquals(1, actual);}

删除操作

// 删除指定记录public void test7() {BasicDBObject query = new BasicDBObject();query.put(“_id”, “000010”);dao.delete(query);List dboList = dao.query(query);Assert.assertEquals(0, dboList.size());}

立即学习“Java免费学习笔记(深入)”;

  Mongo删除比较容易,指定一个BasicDBObject作为匹配条件,将删除匹配的所有记录(文档对象)。

多条件查询

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    数据库

    嵌入式的SQL程序设计

    2025-2-22 7:07:09

    数据库

    基于游标的定位DELETE/UPDATE语句

    2025-2-22 7:07:52

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索