Spring Data MongoDB hello world 示例

openkk 12年前

下面讲解如何使用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>      <dependencies>    <dependency>     <groupId>junit</groupId>     <artifactId>junit</artifactId>     <version>4.8.2</version>     <scope>test</scope>    </dependency>       <!-- Spring framework -->    <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-core</artifactId>     <version>3.0.5.RELEASE</version>    </dependency>       <dependency>     <groupId>org.springframework</groupId>     <artifactId>spring-context</artifactId>     <version>3.0.5.RELEASE</version>    </dependency>       <!-- mongodb java driver -->    <dependency>     <groupId>org.mongodb</groupId>     <artifactId>mongo-java-driver</artifactId>     <version>2.5.2</version>    </dependency>       <dependency>     <groupId>org.springframework.data</groupId>     <artifactId>spring-data-mongodb</artifactId>     <version>1.0.0.M2</version>    </dependency>       <dependency>     <groupId>cglib</groupId>     <artifactId>cglib</artifactId>     <version>2.2</version>    </dependency>      </dependencies>     </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">      <!-- 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>

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<User> 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/