Spring Data MongoDB hello world 示例

openkk 12年前發布 | 51K 次閱讀 MongoDB NoSQL數據庫

下面講解如何使用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
  7. </ol>

    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/


 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!