- 浏览: 47341 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
zn100200:
从一到五我都配置成功了也能正常运行,很好,虽然还是有些不明白的 ...
Java中间件JMS(四)之ActiveMQ整合spring之类转换 -
dengwanchuan:
pansonphy 写道public class TopicP ...
Java中间件JMS(二)之ActiveMQ整合spring(一) -
pansonphy:
public class TopicPublisherServ ...
Java中间件JMS(二)之ActiveMQ整合spring(一) -
AallenXu:
我直接用您的代码,运行时发现报好多java.lang.NoSu ...
NoSQL之MongoDB的CRUD操作 -
dengwanchuan:
sun_2008 写道 4) 创建全局dblink这个你 ...
Database Link详解
MongoDB是一个基于分布式文件存储的数据库,是NoSQL实现的一种,支持Java.NoSQL越来越受到IT界的重视,所以掌握NoSQL技术,也非常重要。
在空闲时间写了Mongo的CRUD代码,请大家参考。有什么地方不好或意见,大家可以提出!
import java.lang.reflect.Field;
import java.lang.reflect.Method; import java.util.ArrayList; import java.util.List; import net.sf.json.JSONObject; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.util.JSON; /** * * <b>功能:实现MongoDB的CRUD操作</b><br> * <br> * <b>完整路径:</b> .MongoUtil2 <br> * <b>创建日期:</b> 2012-4-26 上午10:54:56 <br> * @author <a href="mailto:dengwanchuan@shareinfo.com.cn">dwc</a><br> * <a href="http://www.shareinfo.com.cn">Shenzhen Share Info System Co.,Ltd.</a> * @version 1.0, 2012-4-26 */ public class MongoDBUtil{ private static final String URL="localhost";//连接地址 private static final int PORT=27017;//连接端口 private static final String DB="test";//连接DB private static Mongo mg = null; private static DB db=null; private DBCollection conn=null; /** * * <b>功能:单例模式</b><br> * <b>提示:在这里DB理解为数据库,DBCollection理解为表</b><br> * <br> * @修改者 ~ 邓万川, 2012-4-26 * @return DB */ private static synchronized DB getDb(){ try { if(db==null){ mg = new Mongo(URL, PORT); //获取 DB;如果默认没有创建,mongodb会自动创建 db = mg.getDB(DB); } } catch (Exception e) { e.printStackTrace(); } return db; } /** * * <b>功能:获取连接</b><br> * <br> * @修改者 ~dwc, 2012-4-26 * @param connName 表连接名称 * @return DBCollection 表连接对象 */ public static DBCollection getConn(String connName){ getDb(); return db.getCollection(connName); } /** * * <b>功能:对象销毁,清除内存</b><br> * <br> * @修改者 ~ dwc 2012-4-26 void */ public void destory() { if (mg != null) mg.close(); mg = null; db = null; conn = null; System.gc(); } /** * * <b>功能:根据Mongo对象条件查询所有数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param dbObject Mongo条件对象 * @param connName 表连接名称 * @param className 获取对象的类名称 * @return * @throws Exception List 返回集合 */ public List findAll(DBObject dbObject,String connName,String className)throws Exception{ List<Object> resultList=new ArrayList<Object>(); try { conn=getConn(connName); List<DBObject> list = conn.find(dbObject).toArray(); for(DBObject dbObj:list){ Object obj= DB2Bean(dbObj,className); resultList.add(obj); } } catch (Exception e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return resultList; } /** * * <b>功能:根据自定义对象条件查询所有数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param object 定义条件对象 * @param connName 表连接名称 * @param className 获取对象的类名称 * @return * @throws Exception List 返回集合 */ public List findAll(Object object,String connName,String className)throws Exception{ List<Object> resultList=new ArrayList<Object>(); try { conn=getConn(connName); List<DBObject> list = conn.find(bean2DB(object)).toArray(); for(DBObject dbObj:list){ Object obj= DB2Bean(dbObj,className); resultList.add(obj); } } catch (Exception e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return resultList; } /** * * <b>功能:根据Mongo对象查询单个数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param dbObject Mongo条件对象 * @param connName 表连接名称 * @param className 获取对象的类名称 * @return * @throws Exception Object 返回对象 */ public Object findOne(DBObject dbObject,String connName,String className)throws Exception{ Object obj=null; try { conn=getConn(connName); DBObject result = conn.findOne(dbObject); obj=DB2Bean(dbObject, className); } catch (Exception e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return obj; } /** * * <b>功能:根据自定义对象查询单个数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param object 自定义条件对象 * @param connName 表连接名称 * @param className 获取对象的类名称 * @return * @throws Exception Object 返回对象 */ public Object findOne(Object object,String connName,String className)throws Exception{ Object obj=null; try { conn=getConn(connName); DBObject result = conn.findOne(bean2DB(object)); obj=DB2Bean(result, className); } catch (Exception e) { e.printStackTrace(); }finally{ destory(); } return obj; } /** * * <b>功能:根据条件id查询数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param id 条件id * @param connName 表连接名称 * @param className 获取对象的类名称 * @return * @throws Exception Object 返回对象 */ public Object findOneById(Object id,String connName,String className)throws Exception{ Object obj=null; try { conn=getConn(connName); DBObject dbObject = conn.findOne(new BasicDBObject("_id",id)); obj=DB2Bean(dbObject, className); } catch (Exception e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return obj; } /** * * <b>功能:增加数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param obj 要增加对象 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int add(Object obj,String connName)throws Exception{ int result=-1; try { conn=getConn(connName); DBObject dbObject= (DBObject) JSON.parse(JSONObject.fromObject(obj).toString()); result=conn.insert(dbObject).getN(); } catch (Exception e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return result; } /** * * <b>功能:增加数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param dbObject 封装对象的数据 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int add(DBObject dbObject,String connName)throws Exception{ int result=-1; try { conn=getConn(connName); result=conn.insert(dbObject).getN(); } catch (Exception e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return result; } /** * * <b>功能:修改数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param value 修改的数据 * @param where 修改条件 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int update(DBObject value,DBObject where,String connName) throws Exception{ int result=-1; try { conn=getConn(connName); result= conn.update(where, value).getN(); } catch (MongoException e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return result; } /** * * <b>功能:修改数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param value 修改的数据 * @param where 修改条件 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int update(Object value,Object where,String connName)throws Exception { int result=-1; try { conn=getConn(connName); result= conn.update(bean2DB(where),bean2DB(value)).getN(); } catch (MongoException e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return result; } /** * * <b>功能:根据条件删除数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param obj 要删除的对象 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int remove(Object obj,String connName) throws Exception{ int result=-1; try { conn=getConn(connName); result= conn.remove(bean2DB(obj)).getN(); } catch (MongoException e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return result; } /** * * <b>功能:根据条件删除数据</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param dbObject 要删除的数据 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int remove(DBObject dbObject,String connName)throws Exception { int result=-1; try { conn=getConn(connName); result= conn.remove(dbObject).getN(); } catch (MongoException e) { e.printStackTrace(); throw new Exception(); }finally{ destory(); } return result; } /** * * <b>功能:根据条件得到数据总和</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param dbObject 条件对象 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int getCount(DBObject dbObject,String connName)throws Exception{ int result=0; try { conn=getConn(connName); result=conn.find(dbObject).count(); } catch (Exception e) { e.printStackTrace(); throw new Exception(); } return result; } /** * * <b>功能:根据条件得到数据总和</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param obj 条件对象 * @param connName 表连接名称 * @return * @throws Exception int 返回影响结果 */ public int getCount(Object obj,String connName)throws Exception{ int result=0; try { conn=getConn(connName); result=conn.find(bean2DB(obj)).count(); } catch (Exception e) { e.printStackTrace(); } return result; } /** * * <b>功能:将自定义对象转换为Mongo对象</b><br> * <br> * @修改者 ~ dwc, 2012-4-26 * @param obj 自定义对象 * @return DBObject Mongo对象 */ public static DBObject bean2DB(Object obj)throws Exception{ DBObject dbObject=new BasicDBObject(); Class<? extends Object> clazz=obj.getClass(); Field [] fields=clazz.getDeclaredFields(); for(Field field:fields){ String fieldName=field.getName(); String methodName="get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1,fieldName.length()); Method method=null; Object resultObj=null; try { method=clazz.getMethod(methodName); } catch (Exception e) { e.printStackTrace(); continue; } try { resultObj=method.invoke(obj); } catch (Exception e) { continue; } if(resultObj!=null&&!resultObj.equals("")){ dbObject.put(fieldName, resultObj); } } return dbObject; } /** * * <b>功能:将Mongo对象转换为自定义对象</b><br> * <br> * @修改者 ~ 邓万川, 2012-4-26 * @param dbObject Mongo对象 * @param className 要转换的类名称 * @return * @throws Exception Object */ public static Object DB2Bean(DBObject dbObject,String className) throws Exception{ Class clazz=Class.forName(className); Object obj=clazz.newInstance(); Field [] fields=clazz.getDeclaredFields(); for(Field field:fields){ String fieldName=field.getName(); String methodName="set"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1,fieldName.length()); Method method=null; Object resultObj=null; try { method=clazz.getMethod(methodName,new Class[]{field.getType()}); } catch (Exception e) { e.printStackTrace(); continue; } resultObj=dbObject.get(fieldName); try { resultObj=method.invoke(obj,new Object[]{resultObj}); } catch (Exception e) { continue; } } return obj; } }
public class Student { private Object _id; private String name; private String age; public Object get_id() { return _id; } public void set_id(Object_id) { this._id = _id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.swing.text.TabableView; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.bson.BSONObject; import org.bson.types.ObjectId; import org.junit.After; import org.junit.Before; import org.junit.Test; import com.mongodb.BasicDBObject; import com.mongodb.Bytes; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import com.mongodb.QueryOperators; import com.mongodb.util.JSON; /** * * <b>功能:MongoDB测试类</b><br> * <br> * <b>完整路径:</b> .MongoTest <br> * <b>创建日期:</b> 2012-4-26 下午2:15:41 <br> * @author <a href="mailto:dengwanchuan@shareinfo.com.cn">dwc</a><br> * <a href="http://www.shareinfo.com.cn">Shenzhen Share Info System Co.,Ltd.</a> * @version 1.0, 2012-4-26 */ public class MongoDBTest{ MongoDBUtil mu=new MongoDBUtil(); @Test public void find(){ //List<DBObject> list=queryAll(null, "student"); try { Student stu=new Student(); List<Student> list=mu.findAll(stu,"student",Student.class.getName()); for (Student result : list) { System.out.println("name="+result.getName()); System.out.println("age="+result.getAge()); System.out.println("========================"); } } catch (Exception e) { e.printStackTrace(); } } @Test public void add() { Student stu=new Student(); stu.setAge("24"); stu.setName("tom"); try { mu.add(stu, "stu"); } catch (Exception e) { e.printStackTrace(); } } @Test public void update(){ try { Student where=new Student(); where.setAge("22"); where.setName("tom"); Student value=(Student) mu.findOne(where, "stu", where.getClass().getName()); value.setAge("25"); value.setName("joke"); System.out.println(mu.update(value,where,"stu")); } catch (Exception e) { e.printStackTrace(); } } @Test public void remove(){ try { Student where=new Student(); where.setAge("25"); where.setName("joke"); mu.remove(where, "stu"); } catch (Exception e) { e.printStackTrace(); } } }
- MongoDB.rar (408.8 KB)
- 下载次数: 41
评论
7 楼
AallenXu
2013-06-09
我直接用您的代码,运行时发现报好多java.lang.NoSuchMethodException...如何解决啊?!!! 不知道现在你还有时间帮助一下不?
6 楼
hyneng
2012-05-30
dengwanchuan 写道
hyneng 写道
再说一下我遇到的问题。
如果想按测试类MongoDBTest的add-->find-->update-->find-->remove这个流程跑进来,要注意几点。
1.find方法的表名得注意了,要不,添加进去后查看不到添加的数据,student->stu,
List<Student> list=mu.findAll(stu,"student",Student.class.getName());
2.update方法,如果按照where找不到对象,会出现空指针异常,所以 where.setAge("22"); 应改为 where.setAge("24"); 在此插一句,是不是应该处理这种情况下空针异常的问题
如果想按测试类MongoDBTest的add-->find-->update-->find-->remove这个流程跑进来,要注意几点。
1.find方法的表名得注意了,要不,添加进去后查看不到添加的数据,student->stu,
List<Student> list=mu.findAll(stu,"student",Student.class.getName());
2.update方法,如果按照where找不到对象,会出现空指针异常,所以 where.setAge("22"); 应改为 where.setAge("24"); 在此插一句,是不是应该处理这种情况下空针异常的问题
对不起,回复晚了,第二个问题,的确是要处理空指针异常.
写得挺好的
5 楼
dengwanchuan
2012-05-30
hyneng 写道
再说一下我遇到的问题。
如果想按测试类MongoDBTest的add-->find-->update-->find-->remove这个流程跑进来,要注意几点。
1.find方法的表名得注意了,要不,添加进去后查看不到添加的数据,student->stu,
List<Student> list=mu.findAll(stu,"student",Student.class.getName());
2.update方法,如果按照where找不到对象,会出现空指针异常,所以 where.setAge("22"); 应改为 where.setAge("24"); 在此插一句,是不是应该处理这种情况下空针异常的问题
如果想按测试类MongoDBTest的add-->find-->update-->find-->remove这个流程跑进来,要注意几点。
1.find方法的表名得注意了,要不,添加进去后查看不到添加的数据,student->stu,
List<Student> list=mu.findAll(stu,"student",Student.class.getName());
2.update方法,如果按照where找不到对象,会出现空指针异常,所以 where.setAge("22"); 应改为 where.setAge("24"); 在此插一句,是不是应该处理这种情况下空针异常的问题
对不起,回复晚了,第二个问题,的确是要处理空指针异常.
4 楼
steafler
2012-05-10
灰常不错呀
3 楼
hyneng
2012-05-05
再说一下我遇到的问题。
如果想按测试类MongoDBTest的add-->find-->update-->find-->remove这个流程跑进来,要注意几点。
1.find方法的表名得注意了,要不,添加进去后查看不到添加的数据,student->stu,
List<Student> list=mu.findAll(stu,"student",Student.class.getName());
2.update方法,如果按照where找不到对象,会出现空指针异常,所以 where.setAge("22"); 应改为 where.setAge("24"); 在此插一句,是不是应该处理这种情况下空针异常的问题
如果想按测试类MongoDBTest的add-->find-->update-->find-->remove这个流程跑进来,要注意几点。
1.find方法的表名得注意了,要不,添加进去后查看不到添加的数据,student->stu,
List<Student> list=mu.findAll(stu,"student",Student.class.getName());
2.update方法,如果按照where找不到对象,会出现空指针异常,所以 where.setAge("22"); 应改为 where.setAge("24"); 在此插一句,是不是应该处理这种情况下空针异常的问题
2 楼
hyneng
2012-05-05
还有加以下包:
ezmorph-1.0.2.jar
commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-lang-2.0.jar
commons-logging-1.0.4.jar
ezmorph-1.0.2.jar
commons-beanutils-1.7.0.jar
commons-collections-3.2.jar
commons-lang-2.0.jar
commons-logging-1.0.4.jar
1 楼
hyneng
2012-05-04
赞一个
相关推荐
通过使用 "NoSQL Manager for MongoDB",用户能够更高效地管理和操作 MongoDB 数据库,无论是进行日常的数据库维护还是进行项目开发,都能提供极大的便利。对于初学者,这个工具是学习 MongoDB 的理想起点,因为它...
在本文中,我们将深入探讨如何使用Java进行MongoDB的基本CRUD操作,以及如何处理图片的存储、读取和删除。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,而Java是与其交互的常用编程语言。让我们开始探索...
Springboot整合MongoDB进行CRUD操作的两种方式 在分布式和微服务架构中,Springboot和MongoDB是非常流行的技术栈。 Springboot是最简单的使用Spring的方式,而MongoDB是最流行的NoSQL数据库。两者在实际应用中使用...
MongoDB 是一个流行的 NoSQL 数据库,CRUD(Create、Read、Update、Delete)是 MongoDB 中最基本的四种操作。以下是 MongoDB CRUD 技术操作概述的知识点: 写入(Create) * `insert` 方法:用于将文档插入到集合...
Java操作MongoDB主要涉及到的是Java驱动程序与MongoDB数据库之间的交互,这涵盖了创建连接、执行CRUD(创建、读取、更新、删除)操作等一系列基本的数据库管理任务。MongoDB是一个流行的NoSQL数据库,以其灵活性、高...
6. ** CRUD操作**:MongoDB提供了创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,这些操作直接针对文档进行,非常直观且高效。 7. **聚合框架**:MongoDB的聚合框架允许开发者进行复杂的分析...
- **交互式Shell**:提供了命令行界面用于执行基本的CRUD操作和管理任务。 #### 五、一般功能 - **插入**:通过`insert`命令向集合中添加文档。 - **查询**:使用`find`命令检索文档。 - **删除**:通过`remove`...
MongoDBDriver-Release-0.82.2是针对NoSQL数据库系统MongoDB的一个特定版本的驱动程序包。MongoDB是一种流行的开源、分布式文档数据库,它以JSON格式存储数据,提供高可伸缩性、高性能和灵活性。在这个版本中,我们...
- **CRUD操作**:Create(创建)、Read(读取)、Update(更新)和Delete(删除)是MongoDB的基本操作,NoSQL Manager提供了友好的界面进行这些操作。 3. **MongoDB在实际应用中的优势** - **高性能**:MongoDB...
"nodetunes" 是一个针对 MongoDB 的 CRUD(创建、读取、更新、删除)操作的实践项目,旨在帮助开发者加深对 MongoDB 和 JavaScript 的使用理解。 在这个项目中,"nodetunes" 涉及到以下关键知识点: 1. **MongoDB ...
- **Java操作MongoDB**:介绍如何使用Java语言对MongoDB进行编程操作,包括连接数据库、执行CRUD操作等。 - **Spring集成MongoDB**:通过Spring框架集成MongoDB,利用Spring Data MongoDB简化数据访问逻辑。 #### ...
在本“mongodb之CRUD小demo”中,我们将探讨如何将MongoDB集成到Spring框架中,以便利用Spring提供的强大功能进行数据操作。MongoDB的主要优势在于其灵活性、可扩展性和高性能,而Spring作为Java应用开发的强大框架...
MongoDB是一个面向文档的NoSQL数据库,它的核心功能之一是CRUD操作,即创建(Create)、读取(Read)、更新(Update)、删除(Delete)。在MongoDB中,插入操作是CRUD中的“创建”部分,它允许我们向数据库中添加新的文档。...
【Java程序对MongoDB数据库进行CRUD操作】 MongoDB是一种流行的NoSQL(Not Only SQL)非关系型数据库,它的设计思想是面向文档的,适合处理大量结构化和半结构化的数据。与传统的SQL数据库不同,MongoDB不使用表格...
6. **CRUD操作**:创建(Create)、读取(Read)、更新(Update)和删除(Delete)是MongoDB的基本操作。MongoDB提供了丰富的查询语言,包括聚合框架和地理空间查询。 7. **备份与恢复**:使用`mongodump`和`...
**PHP与MongoDB CRUD操作详解** 在Web开发中,数据管理是至关重要的,而PHP作为常用的后端语言,经常需要与数据库进行交互。MongoDB是一个流行的NoSQL数据库系统,以其灵活性、可扩展性和高性能受到开发者青睐。本...
在shell中,你可以执行CRUD操作(创建、读取、更新、删除)和其他数据库管理任务。 六、MongoDB基本操作 1. 创建数据库:使用`use <database_name>`命令,如果数据库不存在,MongoDB会自动创建。 2. 插入数据:`db....
在《MongoDB权威指南》中,你将深入了解到如何安装和配置MongoDB,创建数据库、集合和文档,以及如何执行基本的CRUD(创建、读取、更新、删除)操作。此外,还会讲解到更高级的主题,如副本集的配置、分片策略、备份...