【MongoDB数据库】Java MongoDB CRUD Example

来源:互联网 发布:飞豆打印软件 购买 编辑:程序博客网 时间:2024/06/05 10:22

上一篇我们讲了MongoDB 的命令入门初探,本篇blog将基于上一篇blog所建立的数据库和表完成一个简单的JavaMongoDB CRUD Example,利用Java连接MongoDB数据库,并实现创建数据库、获取表、遍历表中的对象、对表中对象进行CRUD操作等例程。

1、下载MongoDB Java 支持驱动包

【gitHub下载地址】https://github.com/mongodb/mongo-java-driver/downloads

2、建立Java工程,并导入jar包

3、连接本地数据库服务器

在控制面板中开启Mongodb服务,具体操作可参考【MongoDB数据库】如何安装、配置MongoDB

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. try {  
  2.     mongo = new MongoClient("localhost"27017);// 保证MongoDB服务已经启动  
  3.     db = mongo.getDB("andyDB");// 获取到数据库  
  4. catch (UnknownHostException e) {  
  5.     e.printStackTrace();  
  6. }  

3、遍历所有的数据库名

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public class DBConnection extends TestCase {  
  2.   
  3.     private MongoClient mongo;  
  4.     private DB db ;  
  5.   
  6.     @Override  
  7.     protected void setUp() throws Exception {  
  8.         // TODO Auto-generated method stub  
  9.         super.setUp();  
  10.         try {  
  11.             mongo = new MongoClient("localhost"27017);// 保证MongoDB服务已经启动  
  12.             db = mongo.getDB("andyDB");// 获取到数据库andyDB  
  13.         } catch (UnknownHostException e) {  
  14.             e.printStackTrace();  
  15.         }  
  16.     }  
  17.   
  18.     public void testGetAllDB() {  
  19.         List<String> dbs = mongo.getDatabaseNames();// 获取到所有的数据库名  
  20.         for (String dbname : dbs) {  
  21.             System.out.println(dbname);  
  22.         }  
  23.     }  
  24. }  

4、获取到指定数据库

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. DB db = mongo.getDB("andyDB");// 获取到数据库  

5、遍历数据库中所有的表名

在DBConnection测试类中添加如下测试方法即可:

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testGetAllTables() {  
  2.     Set<String> tables = db.getCollectionNames();  
  3.     for (String coll : tables) {  
  4.         System.out.println(coll);  
  5.     }  
  6. }  

6、获取到指定的表

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. DBCollection table = db.getCollection("person");  

7、遍历表中所有的对象

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testFindAll(){  
  2.         DBCollection table = db.getCollection("person");  
  3.         DBCursor dbCursor = table.find();  
  4.         while(dbCursor.hasNext()){  
  5.             DBObject dbObject = dbCursor.next();  
  6.             //打印该对象的特定字段信息  
  7.             System.out.println("name:"+ dbObject.get("name")+",age:"+dbObject.get("age"));  
  8.             //打印该对象的所有信息  
  9.             System.out.println(dbObject);  
  10.         }  
  11.     }  

Console窗口打印消息:

name:jack,age:50.0
{ "_id" : { "$oid" : "537761da2c82bf816b34e6cf"} , "name" : "jack" , "age" : 50.0}
name:小王,age:24
{ "_id" : { "$oid" : "53777096d67d552056ab8916"} , "name" : "小王" , "age" : 24}

8、保存对象

1)保存对象方法一

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testSave() {  
  2.     DBCollection table = db.getCollection("person");  
  3.     BasicDBObject document = new BasicDBObject();  
  4.     document.put("name""小郭");// 能直接插入汉字  
  5.     document.put("age"24);//"age"对应的值是int型  
  6.     table.insert(document);  
  7. }  
在mongodb shell中使用命令查看数据

> db.person.find()
{ "_id" : ObjectId("537761da2c82bf816b34e6cf"), "name" : "jack", "age" : 50 }
{ "_id" : ObjectId("53777096d67d552056ab8916"), "name" : "小王", "age" : 24 }
{ "_id" : ObjectId("5377712cd67d84f62c65c4f6"), "name" : "小郭", "age" : 24 }

2)保存对象方法二

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testSave2() {  
  2.     DBCollection table = db.getCollection("person");  
  3.     BasicDBObject document = new BasicDBObject();//可以添加多个字段  
  4.     document.put("name""小张");// 能直接插入汉字  
  5.     document.put("password""xiaozhang");// 多添加一个字段也是可以的,因为MongoDB保存的是对象;  
  6.     document.put("age""23");//"age"对应的值是String  
  7.     table.insert(document);  
  8. }  

在mongodb shell中使用命令查看数据

> db.person.find()
{ "_id" : ObjectId("537761da2c82bf816b34e6cf"), "name" : "jack", "age" : 50 }
{ "_id" : ObjectId("53777096d67d552056ab8916"), "name" : "小王", "age" : 24 }
{ "_id" : ObjectId("5377712cd67d84f62c65c4f6"), "name" : "小郭", "age" : 24 }
{ "_id" : ObjectId("53777230d67dfe576de5079a"), "name" : "小张", "password" : "xiaozhang", "age" : "23" }

3)保存对象方法三通过添加Map集合的方式添加数据到BasicDBObject

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testSave3(){  
  2.     DBCollection table = db.getCollection("person");  
  3.       
  4.     Map<String,Object> maps = new HashMap<String,Object>();  
  5.     maps.put("name""小李");  
  6.     maps.put("password""xiaozhang");  
  7.     maps.put("age"24);  
  8.       
  9.     BasicDBObject document = new BasicDBObject(maps);//这样添加后,对象里的字段是无序的。  
  10.     table.insert(document);  
  11. }  

在mongodb shell中使用命令查看数据

> db.person.find()
{ "_id" : ObjectId("537761da2c82bf816b34e6cf"), "name" : "jack", "age" : 50 }
{ "_id" : ObjectId("53777096d67d552056ab8916"), "name" : "小王", "age" : 24 }
{ "_id" : ObjectId("5377712cd67d84f62c65c4f6"), "name" : "小郭", "age" : 24 }
{ "_id" : ObjectId("53777230d67dfe576de5079a"), "name" : "小张", "password" : "xiaozhang", "age" : "23" }
{ "_id" : ObjectId("537772e9d67df098a26d79a6"), "age" : 24, "name" : "小李", "password" : "xiaozhang" }

9、更新对象

我们可以结合【mongodb shell命令】db.person.update({name:"小李"},{$set:{password:"hello"}})来理解Java是如何操作对象来更新的。{name:"小李"}是一个BasicDBObject,{$set:{password:"hello"}也是一个BasicDBObject,这样理解的话,你就会觉得mongodb shell命令操作和Java操作很相似。

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testUpdate() {  
  2.     DBCollection table = db.getCollection("person");  
  3.     BasicDBObject query = new BasicDBObject();  
  4.     query.put("name""小张");  
  5.   
  6.     BasicDBObject newDocument = new BasicDBObject();  
  7.     newDocument.put("age"23);  
  8.   
  9.     BasicDBObject updateObj = new BasicDBObject();  
  10.     updateObj.put("$set", newDocument);  
  11.     table.update(query, updateObj);  
  12. }  
  13.   
  14. // 命令操作:db.person.update({name:"小李"},{$set:{password:"hello"}})  
  15. public void testUpdate2() {  
  16.     DBCollection table = db.getCollection("person");  
  17.     BasicDBObject query = new BasicDBObject("name""小张");  
  18.     BasicDBObject newDocument = new BasicDBObject("age"24);  
  19.     BasicDBObject updateObj = new BasicDBObject("$set", newDocument);  
  20.     table.update(query, updateObj);  
  21. }  

10、删除对象

可参考db.users.remove({name:"小李"})命令来理解Java操作对象

[java] view plain copy 在CODE上查看代码片派生到我的代码片
  1. public void testDelete(){  
  2.     DBCollection table = db.getCollection("person");  
  3.     BasicDBObject query = new BasicDBObject("name""小李");  
  4.     table.remove(query);  
  5. }  

11、参考

Java + MongoDB Hello World Example(推荐)

12、你可能感兴趣

【MongoDB数据库】如何安装、配置MongoDB

【MongoDB数据库】MongoDB 命令入门初探

0 0
原创粉丝点击