Spring管理MongoDB

2014-11-24 18:51:22 · 作者: · 浏览: 0

Spring项目为方便对Mongodb的操作,建立了spring-data的子项目,地址在:


http://www.springsource.org/spring-data/mongodb,目前版本是1.0.0M2阶段,已支持对Mongodb的一系列基本操作。我们先从http://www.springsource.org/spring-data/mongodb中下载相关的包:spring-data-document-1.0.0.M2.zip,下载解压后,将解压后的四个JAR文件放到工程路径的lib库中,本文中还将使用Spring 3.0.4的版本,请读者自行下载配置。


Spring Mongodb的配置


目前,可以有两种方式对Spring mongodb进行配置。第一种是使用Spring 3中的注解,另外一种是使用传统的XML配置。下面分别进行讲解:


使用Spring 3中的注解


首先在配置类中,要继承AbstractMongoConfiguration类,代码如下:


这里,引入了MongoTemplate模版类,并且使用对连接数据库的地址,数据库名和collection进行了初始化。


在调用Spring Mongodb配置时,只需要在需要使用的类中调用AnnotationConfigApplicationContext,传入刚才配置好的SpringMongoConfig类即可。如下代码所示:


当获得了mongoOperation对象的实例后,即可进行对mongodb的相关操作。


使用XML配置文件


使用XML配置文件的方法如下:


注意这里引用相关的命名空间xmlns:mongo="http://www.springframework.org/schema/data/mongo"
,并且在名为mongoTemplate中注入相关的数据库地址,数据库名即可,使用方法如下:


使用Spring Mongodb实现增删改查操作


下面通过实例讲解如何使用Spring Mongodb实现增删改查操作,假设我们现在有一个实


体类user如下:


接下来,我们看具体的操作代码,如下,这里假设要将user类保存到名为userprofile的数据集中。


输出结果如下:


Spring mongodb插入数据


下面详细讲解如何使用spring mongodb插入数据。在spring mongodb中,插入数据到


mongodb有如下几种方法:


要注意的是,Spring mongodb中,当没有指定collection时,就会把对象保存到以对象命名的collection中。比如上例中的mongoOperation.insert(user),由于没指定collection的名称,所以会把user对象保存到user这个新建立的collection中。


另外请注意其中的save和insert的区别。它们的区别为:


1)save意思是,当记录不存在时插入,或者是当记录已存在是更新,实际上就是saveorupdate的意思。


2) insert的意思是:当记录不存在时插入,而如果记录存在时则忽略,继续插入。


下面举例子说明:


输出结果如下:


Case 1...
User [id
=1111, firstname=user, lastname=A, age=99]
Case
2...
User [id
=2222, firstname=user, lastname=B, age=99]
Case
3...
User [id
=3333, firstname=user, lastname=C, age=99]
User [id
=4444, firstname=user, lastname=D, age=99]
User [id
=5555, firstname=user, lastname=E, age=99]


更新Document


在mongodb中,可以使用save,updateFirst(),updateMulti()方法来进行更新,下面


是相关的例子


结果为:



此外,还支持使用updateMulti,updateMulti是将所有的对象进行更新,比如:


表示将所有firstname为yong的user对象的age属性全部更新为40。


查询Document


在spring mongodb中,可以使用findOne(),find()和getCollection()去查询mongodb,常见的用法如下:


删除document


在spring mongodb中, 删除document使用remove方法,示例如下: