[置顶] Spring Data MongoDB hello world 示例

下面讲解如何使用 spring-data-mongdb 来对 mongdb 进行增删改查的操作

 

你需要的工具:

 

  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.6
  5. JDK – 1.6
  6. Maven – 3.0.3
1. 工程目录结构
    Spring data for mongodb directory structure

2. 依赖
   你需要在 pom.xml 里面添加如下依赖
	<repositories>
		<repository>
			<id>spring-milestone</id>
			<name>Spring Maven MILESTONE Repository</name>
			<url>http://maven.springframework.org/milestone</url>
		</repository>
	</repositories>
&lt;dependencies&gt;
	&lt;dependency&gt;
		&lt;groupId&gt;junit&lt;/groupId&gt;
		&lt;artifactId&gt;junit&lt;/artifactId&gt;
		&lt;version&gt;4.8.2&lt;/version&gt;
		&lt;scope&gt;test&lt;/scope&gt;
	&lt;/dependency&gt;

	&lt;!-- Spring framework --&gt;
	&lt;dependency&gt;
		&lt;groupId&gt;org.springframework&lt;/groupId&gt;
		&lt;artifactId&gt;spring-core&lt;/artifactId&gt;
		&lt;version&gt;3.0.5.RELEASE&lt;/version&gt;
	&lt;/dependency&gt;

	&lt;dependency&gt;
		&lt;groupId&gt;org.springframework&lt;/groupId&gt;
		&lt;artifactId&gt;spring-context&lt;/artifactId&gt;
		&lt;version&gt;3.0.5.RELEASE&lt;/version&gt;
	&lt;/dependency&gt;

	&lt;!-- mongodb java driver --&gt;
	&lt;dependency&gt;
		&lt;groupId&gt;org.mongodb&lt;/groupId&gt;
		&lt;artifactId&gt;mongo-java-driver&lt;/artifactId&gt;
		&lt;version&gt;2.5.2&lt;/version&gt;
	&lt;/dependency&gt;

	&lt;dependency&gt;
		&lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
		&lt;artifactId&gt;spring-data-mongodb&lt;/artifactId&gt;
		&lt;version&gt;1.0.0.M2&lt;/version&gt;
	&lt;/dependency&gt;

	&lt;dependency&gt;
		&lt;groupId&gt;cglib&lt;/groupId&gt;
		&lt;artifactId&gt;cglib&lt;/artifactId&gt;
		&lt;version&gt;2.2&lt;/version&gt;
	&lt;/dependency&gt;

&lt;/dependencies&gt;

</project>


Annotation

 需要在 java 文件中声明 spring 的 mongodb 注解

 
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");
}

}


 然后在 main 函数中就可以通过下面方式来获取 mongodbtemplate

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

XML

   通过 xml 方式来配置

<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">
&lt;!-- Default bean name is 'mongo' --&gt;
&lt;mongo:mongo host="localhost" port="27017" /&gt;

&lt;bean id="mongoTemplate" 
             class="org.springframework.data.document.mongodb.MongoTemplate"&gt;
	&lt;constructor-arg ref="mongo" /&gt;
	&lt;constructor-arg name="databaseName" value="yourdb" /&gt;
	&lt;constructor-arg name="defaultCollectionName" value="yourCollection" /&gt;
&lt;/bean&gt;

&lt;!-- To translate any MongoExceptions thrown in @Repository annotated classes --&gt;
&lt;context:annotation-config /&gt;

</beans>


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

4. 定义用户模型

 
public class User {
private String id;
private String firstname;
private String lastname;
private int age;

//getter and setter methods 

}


5.CRUD 操作

 
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&lt;User&gt; listUser =  
    	mongoOperation.getCollection("userprofile", User.class);
    System.out.println("Number of user = " + listUser.size());

}

}


输出:

 

 

savedUser : User [id=1001, firstname=yong, lastname=mook kim, age=30]
updatedUser : User [id=1001, firstname=yong, lastname=new lastname, age=30]
Number of user = 0

 

参考:http://www.mkyong.com/mongodb/spring-data-mongodb-hello-world-example/