`

spring mongodb学习

阅读更多
  spring mongodb目前是M3,需要配合的是spring 3.0.5及JDK 1.6下,下面举例子
说明:

1 启动一个mongodb数据库
    ./mongodb-xxxxxxx/bin/mongod --dbpath=/mongodb

2 例子中,把20个Person对象入mongodb数据库,算其平均年龄
  
@Document
public class Person {

    @Id
    private String personId;

    private String name;
    private String homeTown;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(final String personId) {
        this.personId = personId;
    }

    public String getName() {
        return name;
    }
    public void setName(final String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(final int age) {
        this.age = age;
    }

    public String getHomeTown() {
        return homeTown;
    }

    public void setHomeTown(final String homeTown) {
        this.homeTown = homeTown;
    }

    @Override
    public String toString() {
        return "Person [id=" + personId + ", name=" + name + ", age=" + age + ", home town=" + homeTown + "]";
    }

 
   

3 编写业务逻辑类,调用mongodb,代码如下:
 
@Repository
public class PersonRepository {

    static final Logger logger = LoggerFactory.getLogger(PersonRepository.class);

    @Autowired
    MongoTemplate mongoTemplate;

    public void logAllPersons() {
        List<Person> results = mongoTemplate.findAll(Person.class);
        logger.info("Total amount of persons: {}", results.size());
        logger.info("Results: {}", results);
    }

    /**
     * Calculates the average age of a {@link Person}.
     *
     * @return the average age
     */
    public int getAvarageAgeOfPerson() {
        List<Person> results = mongoTemplate.findAll(Person.class);
        int age = 0;
        Iterator<Person> personIterator = results.iterator();
        while (personIterator.hasNext()) {
            Person nextPerson = personIterator.next();
            age += nextPerson.getAge();
        }
        return age / results.size();
    }

    public void insertPersonWithNameJohnAndRandomAge() {
        //get random age between 1 and 100
        double age = Math.ceil(Math.random() * 100);

        Person p = new Person("John", (int) age);

        mongoTemplate.insert(p);
    }

    /**
     * Create a {@link Person} collection if the collection does not already exists
     */
    public void createPersonCollection() {
        if (!mongoTemplate.collectionExists(Person.class)) {
            mongoTemplate.createCollection(Person.class);
        }
    }

    /**
     * Drops the {@link Person} collection if the collection does already exists
     */
    public void dropPersonCollection() {
        if (mongoTemplate.collectionExists(Person.class)) {
            mongoTemplate.dropCollection(Person.class);
        }
    }

  


4 配置spring配置文件
 
<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

  <!-- Activate annotation configured components -->
  <context:annotation-config/>

  <!-- Scan components for annotations within the configured package -->
  <context:component-scan base-package="com.jeroenreijn.mongodb.example">
    <context:exclude-filter type="annotation" expression="org.springframework.context.annotation.Configuration"/>
  </context:component-scan>

  <!-- Define the MongoTemplate which handles connectivity with MongoDB -->
  <bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
    <constructor-arg name="mongo" ref="mongo"/>
    <constructor-arg name="databaseName" value="mongodb

"/>
  </bean>

  <!-- Factory bean that creates the Mongo instance -->
  <bean id="mongo" class="org.springframework.data.document.mongodb.MongoFactoryBean">
    <property name="host" value="localhost"/>
  </bean>

  <!-- Use this post processor to translate any MongoExceptions thrown in @Repository annotated classes -->
  <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

</beans>



5 最后启动的主类
 
public class MongoDBApp {

    static final Logger logger = LoggerFactory.getLogger(MongoDBApp.class);

    public static void main( String[] args ) {
		logger.info("Bootstrapping MongoDemo application");

		ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("META-INF/spring/applicationContext.xml");

        PersonRepository personRepository = context.getBean(PersonRepository.class);

        // cleanup person collection before insertion
        personRepository.dropPersonCollection();

        //create person collection
        personRepository.createPersonCollection();

        for(int i=0; i<20; i++) {
            personRepository.insertPersonWithNameJohnAndRandomAge();
        }

        personRepository.logAllPersons();
        logger.info("Avarage age of a person is: {}", personRepository.getAvarageAgeOfPerson());

        logger.info("Finished MongoDemo application");
	}
4
1
分享到:
评论
4 楼 b30164 2012-06-18  
<bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
根据你的地址,我下载的jar中,mongoTemplate对应的class=“org.springframework.data.mongodb.core.MongoTemplate”
可是项目启动时总是异常,如下: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mongoTemplate' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Could not resolve matching constructor (hint: specify index/type/name arguments for simple parameters to avoid type ambiguities)

我猜测是因为MongoTemplate无默认构造方法造成的,有没有解决方案,谢谢
3 楼 CrazzyLee 2012-04-19  
很急,希望你能看到。
2 楼 CrazzyLee 2012-04-19  
我想问一下,如果我mongoDB设置了用户名密码,在配置文件中应该怎么加上?
1 楼 supermy 2011-12-12  
ding ding

相关推荐

    spring mongodb 中文文档

    通过学习这篇文档,开发者可以熟练掌握Spring Data MongoDB 的各种特性,从而更高效地在Java 应用中利用MongoDB 的强大功能。无论是简单的数据操作还是复杂的查询,Spring Data MongoDB 都能提供简洁、强大的解决...

    spring mongodb很好的例子

    在IT领域,Spring框架是Java开发中的一...通过分析和学习`HelloSpringWithMongoDB-master`这个示例项目,开发者可以更好地理解如何在实际应用中结合Spring MVC和Spring Data MongoDB,实现与MongoDB数据库的高效交互。

    Spring Data MongoDB中文文档

    无论你是初学者还是经验丰富的开发者,深入学习 Spring Data MongoDB 都将极大地提升你在开发 MongoDB 应用时的生产力。为了进一步了解 Spring Data MongoDB,建议阅读官方文档,学习其详细的功能和最佳实践。

    Spring+MongoDB整合 项目

    这个项目为开发者提供了一个实战平台,通过学习和实践,可以深入理解Spring和MongoDB的整合方式,提升在分布式、高并发场景下的数据处理能力。同时,Maven的使用也强化了项目管理和团队协作的能力。总之,本项目是...

    springdata mongodb api文档

    SpringData MongoDB是SpringData项目中支持MongoDB这一NoSQL文档数据库的部分。SpringData项目旨在简化对各种数据源的访问,而MongoDB作为一种流行的文档型数据库,非常适合处理大量的分布式数据。SpringData ...

    Spring-Mongodb例子

    Spring MongoDB模块使得在Spring应用中集成MongoDB变得简单。 首先,我们来了解Spring框架的核心概念。Spring是一个依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的...

    Spring Mongodb Maven示例

    Spring MongoDB Maven 示例是一个集成Spring框架、MongoDB数据库和Maven构建工具的项目,旨在提供一个基础的、易于理解的学习平台,帮助开发者快速上手MongoDB在Spring应用中的使用。在这个项目中,你将看到如何配置...

    spring data mongodb代码参考

    Spring Data MongoDB 是一个用于简化MongoDB数据库操作的框架,它为Spring应用提供了强大的支持,使得开发者可以更加方便地集成和操作非关系型数据库。在这个"spring data mongodb代码参考"中,我们将深入探讨如何...

    源码-spring+MongoDB的整合

    通过学习和实践"源码-spring+MongoDB的整合Dome",开发者将能掌握如何在实际项目中整合Spring和MongoDB,实现高效、灵活的数据存储和访问。这将有助于提升开发效率,减少代码量,同时充分利用MongoDB的非关系型特性...

    Spring3+Spring-data-mongodb1.5.6示例

    在本示例中,我们将深入探讨如何在Spring 3框架中集成Spring Data MongoDB 1.5.6,以便高效地处理MongoDB数据库。...通过学习这些示例,你可以更好地理解和掌握Spring 3与Spring Data MongoDB 1.5.6的整合技巧。

    Spring3.1 MongoDB整合实例(含jar包)已测

    总的来说,Spring 3.1与MongoDB的整合使得Java开发者能以一种声明式的方式处理NoSQL数据库,降低了学习曲线,提高了开发效率。通过掌握这些知识,你将能够构建出灵活、可扩展的后端系统,充分利用MongoDB的强大功能...

    MongoDB复制集及与Spring集成操作

    MongoDB是一种流行的开源、分布式文档型数据库,以其灵活性、高性能和可扩展性而备受青睐。在企业级应用中,为了确保数据的高可用...在不断学习和实践中,我们可以更好地利用MongoDB的强大功能,为业务提供可靠的支撑。

    SpringMongoDb:学习和测试 Spring 与 MongoDB 集成的示例项目

    SpringMongoDb 学习和测试 Spring 与 MongoDB 集成的示例项目。 作为先决条件,这需要一个 MongoDB 服务器。 并且可以在 Spring bean“AbstractMongoConfiguration”中配置服务器详细信息。

    spring mvc+spring data+mongodb实例1

    这个实例涵盖了Spring MVC的控制器设计、Spring Data MongoDB的使用,以及MongoDB的基础操作,是学习现代Java Web开发的一个好例子。通过阅读源码并动手实践,开发者可以加深对这三个技术的理解,并提升自己的技能。

    spring-boot操作mongodb例子

    Spring Boot 是一个由 Pivotal 团队开发的框架,旨在简化 Spring 应用程序的...通过学习这个例子,开发者可以更好地理解如何在实际项目中利用 Spring Boot 的强大功能来操作非关系型数据库,实现高效的数据存储和检索。

    SpringCloud-mongodb.7z

    Spring Data MongoDB是Spring Data项目的一部分,它为MongoDB提供了易于使用的抽象层,包括Repository接口,使得开发者可以使用Java方法名直接执行数据库操作,降低了学习曲线,提升了开发效率。例如,我们可以定义...

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

    MongoDB是一种流行的开源、分布式文档数据库,常用于处理大规模数据。在本篇“MongoDB初探(二)----使用spring-data配置...如果你有这个项目的源码,可以通过运行和调试它来更好地理解和学习Spring Data MongoDB的用法。

    spring-mongodb整合

    在IT行业中,Spring框架是Java开发者的首选工具之一,它为构建企业级应用程序提供了全面的...通过学习和熟练掌握这种整合方式,开发者能够更好地利用Spring的强大力量和MongoDB的灵活性,为现代Web应用开发带来便利。

    java spring+mongodb

    Java Spring与MongoDB的整合是现代Web开发中的一个重要主题,特别是在使用NoSQL数据库来处理大量非结构化数据时。MongoDB是一种流行的文档型数据库,它提供了高性能、高可用性和可扩展性。Spring框架则为Java开发者...

    MongoDB整合Spring

    将MongoDB与Spring整合,可以充分利用Spring的IoC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)特性,以及MongoDB的文档型数据存储优势,实现高效、灵活的数据管理。...

Global site tag (gtag.js) - Google Analytics