`
yangjizhong24
  • 浏览: 399583 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

MongoDB初探(二)----使用spring-data配置mongodb

 
阅读更多

spring 就是NB,很快找到spring配置mongodb的解决方案:spring-data

 

本文如题,让我们轻松通过spring来管理mongodb的各种操作。

 

该文章主要参考spring的官方实例文档:spring-data-mongodb-hello-world-example:http://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/

 

想看原著的同学可以借鉴哈,写的相当不错!

 

我们可以通过Spring Data for MongoDB 框架的两种方式来配置mongodb: XML配置文件 and 注解(annotation)来进行CRUD 操作

 

使用工具:

  1. Spring Data MongoDB – 1.0.0.M2
  2. Spring Core – 3.0.5.RELEASE
  3. Java Mongo Driver – 2.5.2
  4. Eclipse – 3.5
  5. JDK – 1.6
  6. Maven2

该项目源码是spring官方提供的,可通过maven来构建项目,使用起来非常方便!哥们的附件里会提供源码供大家下载。

不过现在maven还没有引入mongodb相关的jar文件,所以请在http://www.springsource.org/spring-data/mongodb自行下载并引入项目,附件里我也会给大家提供。

 

 

如果你已经把源码准备好了,现在我们继续:

 

一,通过spring有两种方式引入mongodb:

 

1.通过注解(Annotation):

 

文件:SpringMongoConfig.java

 

package com.mkyong.config;
 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.document.mongodb.MongoTemplate;
import org.springframework.data.document.mongodb.config.AbstractMongoConfiguration;
import com.mongodb.Mongo;
 
/**
 * Spring MongoDB configuration file
 * 
 */
@Configuration
public class SpringMongoConfig extends AbstractMongoConfiguration {
 
	@Override
	public @Bean Mongo mongo() throws Exception {
 
		return new Mongo("localhost");
	}
 
	@Override
	public @Bean MongoTemplate mongoTemplate() throws Exception {
 
		return new MongoTemplate(mongo(),"yourdb","yourCollection");
	}
 
}

 

 慢慢发现通过注解配置这些还是很方便的,不常改的配置直接写类里而不麻烦xml配置文件不是很爽?

 

使用的时候也非常方便:

ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
    MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");

 

相信大家都能看懂。

到这点你应该能发现MongoOperations 是主要干事的了

 

2.通过xml配置文件

 

上代码:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mongo="http://www.springframework.org/schema/data/mongo"
	xsi:schemaLocation="http://www.springframework.org/schema/context
          http://www.springframework.org/schema/context/spring-context-3.0.xsd
          http://www.springframework.org/schema/data/mongo
          http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
          http://www.springframework.org/schema/beans
          http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
 
	<!-- Default bean name is 'mongo' -->
	<mongo:mongo host="localhost" port="27017" />
 
	<bean id="mongoTemplate" 
                 class="org.springframework.data.document.mongodb.MongoTemplate">
		<constructor-arg ref="mongo" />
		<constructor-arg name="databaseName" value="yourdb" />
		<constructor-arg name="defaultCollectionName" value="yourCollection" />
	</bean>
 
	<!-- To translate any MongoExceptions thrown in @Repository annotated classes -->
	<context:annotation-config />
 
</beans>

 

标准的spring环境配置。

 

使用:

 

    ApplicationContext ctx = new GenericXmlApplicationContext("mongo-config.xml");

 

二。使用模型:

 

User:

 

 

package com.mkyong.user;
 
public class User {
 
	private String id;
	private String firstname;
	private String lastname;
	private int age;
 
	//getter and setter methods 
}

 

不需要任何注解的!

 

三。CRUD操作:

 

 

Full example to show you how to use Spring data to perform CRUD operations in mongoDB. The “user” object is saved into a collection named “userprofile“, under “yourdb” database.

 

这个实例给大家展示了spring data通过mongoDB进行的CRUD 操作。"user"对象被操作在“userprofile“集合(可理解为表)中,“yourdb”数据库下。

 

 

 

package com.mkyong.core;
 
import java.util.List;
 
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.data.document.mongodb.MongoOperations;
import org.springframework.data.document.mongodb.query.Criteria;
import org.springframework.data.document.mongodb.query.Query;
import org.springframework.data.document.mongodb.query.Update;
import com.mkyong.config.SpringMongoConfig;
import com.mkyong.user.User;
 
public class App
{
 
    public static void main( String[] args )
    {
    	//For Annotation
    	ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig.class);
 
    	//For XML
    	//ApplicationContext ctx = new GenericXmlApplicationContext("mongo-config.xml");
 
    	MongoOperations mongoOperation = (MongoOperations)ctx.getBean("mongoTemplate");
 
        User user = new User("1001", "yong", "mook kim", 30);
 
        //save
        mongoOperation.save("userprofile",user);
 
        //find
        User savedUser = mongoOperation.findOne("userprofile",
        		new Query(Criteria.where("id").is("1001")),
				User.class);
 
        System.out.println("savedUser : " + savedUser);
 
        //update
        mongoOperation.updateFirst("userprofile",
        		new Query(Criteria.where("firstname").is("yong")), 
        		Update.update("lastname", "new lastname"));
 
        //find
        User updatedUser = mongoOperation.findOne("userprofile",
        		new Query(Criteria.where("id").is("1001")),
				User.class);
 
        System.out.println("updatedUser : " + updatedUser);
 
        //delete
        mongoOperation.remove("userprofile",
        		new Query(Criteria.where("id").is("1001")),
        		User.class);
 
        //List
        List<User> listUser =  
        	mongoOperation.getCollection("userprofile", User.class);
        System.out.println("Number of user = " + listUser.size());
 
    }
 
}

 

 

 

运行看看吧。。。

 

 

旅途愉快!

 

 

 

 

分享到:
评论
2 楼 ariestiger 2012-01-11  
嗯,刚又调试了一下,知道原因了,可以了
1 楼 ariestiger 2012-01-11  
你能保存成功?我保存的时候跟进去看了一下,_id都生成了,但在mongo中查询的时候就没有结果,也没见增加记录。

相关推荐

    Spring-Data-MongoDB3.2

    - 添加依赖:在Maven或Gradle配置文件中添加Spring Data MongoDB和MongoDB Java驱动的依赖。 - 配置MongoDB连接:在Spring配置文件中指定MongoDB服务器的URL、端口、数据库名等信息。 - 创建MongoDBTemplate实例:...

    mongodb-driver-sync-4.2.3-API文档-中英对照版.zip

    赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....

    mongodb-driver-core-4.2.3-API文档-中文版.zip

    赠送jar包:mongodb-driver-core-4.2.3.jar; 赠送原API文档:mongodb-driver-core-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-core-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-core-4.2.3....

    mongodb-driver-sync-4.2.3-API文档-中文版.zip

    赠送jar包:mongodb-driver-sync-4.2.3.jar; 赠送原API文档:mongodb-driver-sync-4.2.3-javadoc.jar; 赠送源代码:mongodb-driver-sync-4.2.3-sources.jar; 赠送Maven依赖信息文件:mongodb-driver-sync-4.2.3....

    spring-data-mongodb-parent-reference

    文档的标题为 "spring-data-mongodb-parent-reference",意味着这份PDF文档是关于如何使用Spring Data MongoDB的参考资料。文档的描述中提到该文档是2013年4月18日的版本,强调了官方文档的详细程度以及其对于Java...

    spring-data-mongodb-reference-docs-1.9.4

    spring-data-mongodb-referrence-docs-1.9.4

    spring-data-mongodb-cross-store-1.3.5.RELEASE.zip

    标题中的"spring-data-mongodb-cross-store-1.3.5.RELEASE.zip"表明这是一个关于Spring Data MongoDB Cross Store的开源项目,版本为1.3.5.RELEASE。Spring Data是Spring框架的一部分,它提供了与各种数据存储进行...

    spring-data-mongodb-1.8.0.RELEASE(含源码)

    - **MongoEntity**:Spring Data MongoDB 使用注解来定义对象如何映射到 MongoDB 文档。例如,`@Document` 注解标识一个类为 MongoDB 的文档实体,`@Id` 用于指定主键字段。 - **Field 映射**:`@Field` 注解用于...

    spring-data-mongodb-3.1.8.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    MongoDB(mongodb-org-server_5.0.4_amd64.deb)

    MongoDB Community Server(mongodb-org-server_5.0.4_amd64.deb)适用于适用于Debian10 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是...

    mongodb-driver-core-3.5.0.jar

    与`mongodb-driver-core-3.5.0.jar`一同使用的还有`bson-3.5.0.jar`和`mongodb-driver-3.5.0.jar`。`bson-3.5.0.jar`包含BSON库,它是Binary JSON的缩写,是MongoDB用于数据存储和传输的二进制格式。它提供了将JSON...

    MongoDB Community(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-5.0.8-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    mongodb-linux-x86_64-rhel70-4.2.5.tgz

    `mongodb-linux-x86_64-rhel70-4.2.5.tgz`是一个专为RHEL 7.0系统设计的MongoDB二进制包,版本为4.2.5。 首先,安装MongoDB需要确保系统满足最低要求,例如兼容的Linux内核版本、足够的内存以及适当的硬件配置。...

    MongoDB(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)

    MongoDB Community Server(mongodb-org-server-5.0.4-1.el7.x86_64.rpm)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。...

    mongodb-linux-x86_64-4.0.10.tgz

    mongodb-linux-x86_64-4.0.10.tgz的下载 mongodb-linux-x86_64-4.0.10.tgz的下载 mongodb-linux-x86_64-4.0.10.tgz的下载

    Studio3T+data-man-mongodb-ent-2019.3.0.jar

    Studio3T mac 加 data-man-mongodb-ent-2019.3.0.jar

    MongoDB(mongodb-linux-x86_64-rhel70-5.0.4.tgz)

    MongoDB Community Server(mongodb-linux-x86_64-rhel70-5.0.4.tgz)适用于RedHat / CentOS 7.0 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 ...

    mongodb-windows-x86-64-7.0.5-signed.msi

    mongodb-windows-x86_64-7.0.5-signed.msi 数据库构建工具

    mongodb-linux-x86_64-4.0.8.tgz

    - 配置环境变量:在`~/.bashrc`或`~/.bash_profile`文件中添加`export PATH=&lt;mongodb-install-dir&gt;/bin:$PATH`,然后运行`source ~/.bashrc`或`source ~/.bash_profile`。 - 启动MongoDB:`mongod --dbpath /data/...

Global site tag (gtag.js) - Google Analytics