`
chenshengzun
  • 浏览: 115229 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

MongoDB整合Spring

 
阅读更多
MongoDB和Spring整合,根据开发文档找到对应的版本
Spring Data Document 1.x binaries requires JDK level 6.0 and above, and Spring Framework 3.0.x and above.
In terms of document stores, MongoDB preferably version 1.6.5 or later or CouchDB 1.0.1 or later are required.
根据官方文档知道Spring必须是3.0.x或以上的版本,MongoDB必须是1.6.5以上的版本才行。
要想整合Spring和Mongodb必须下载相应的jar,这里主要是用到两种jar一种是spring-data-document和spring-data-commons两种类型的jar但是两种类型的jar版本必须匹配以免引起jar的冲突因为commons后面的版本jar目录有所改变所有版本必须要对应好下面是jar下载地址
http://www.springsource.org/spring-data/mongodb
http://www.springsource.org/spring-data/commons


下面是我下载的jar还有就是添加mongodb java驱动包,spring jar添加我就不多说了
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"
          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">
 
  <mongo:mongo host="localhost" port="27017"> 
  </mongo:mongo>
  
  <bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
    <constructor-arg ref="mongo"/>
    <constructor-arg name="databaseName" value="db"/>
    <constructor-arg name="defaultCollectionName" value="person" />
  </bean>
  	<bean id="personRepository" class="com.mongo.repository.PersonRepository">
		<property name="mongoTemplate" ref="mongoTemplate"></property>
	</bean>
 </beans>

添加实体类:
package com.mongo.entity;


public class Person {
	private String id;
	private String name;
	private int age;

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

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

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

	public int getAge() {
		return age;
	}

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

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

}


定义增删查改的接口
package com.mongo.intf;

import java.util.List;

import com.mongo.entity.Person;

public interface AbstractRepository {
	public void insert(Person person);
	public Person findOne(String id);
	public List<Person> findAll();
	public List<Person> findByRegex(String regex);
	public void removeOne(String id);
	public void removeAll();
	public void findAndModify(String id);
}


实现接口类:
package com.mongo.repository;

import java.util.List;
import java.util.regex.Pattern;

import org.springframework.data.document.mongodb.MongoTemplate;
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.mongo.entity.Person;
import com.mongo.intf.AbstractRepository;

public class PersonRepository implements AbstractRepository{

	private MongoTemplate mongoTemplate;

	@Override
	public List<Person> findAll() {
		return getMongoTemplate().find(new Query(), Person.class);
	}

	@Override
	public void findAndModify(String id) { 
		getMongoTemplate().updateFirst(new Query(Criteria.where("id").is(id)), new Update().inc("age", 3));
	}

	@Override
	public List<Person> findByRegex(String regex) {
		Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);
		Criteria criteria = new Criteria("name").regex(pattern.toString());
		return getMongoTemplate().find(new Query(criteria), Person.class);
	}

	@Override
	public Person findOne(String id) {
		return getMongoTemplate().findOne(new Query(Criteria.where("id").is(id)), Person.class);
	}

	@Override
	public void insert(Person person) {
		getMongoTemplate().insert(person);
	}

	@Override
	public void removeAll() {
		List<Person> list = this.findAll();
		if(list != null){
			for(Person person : list){
				getMongoTemplate().remove(person);
			}
		}
	}

	@Override
	public void removeOne(String id){
		Criteria criteria = Criteria.where("id").in(id);
		if(criteria == null){
			 Query query = new Query(criteria);
			 if(query != null && getMongoTemplate().findOne(query, Person.class) != null)
				 getMongoTemplate().remove(getMongoTemplate().findOne(query, Person.class));
		}
	}

	public MongoTemplate getMongoTemplate() {
		return mongoTemplate;
	}

	public void setMongoTemplate(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}
	
}


添加一个测试类就可以测试以上的方法了
分享到:
评论
7 楼 北极心1991 2015-04-18  
话说你用户名和密码的怎么配置?
6 楼 chenshengzun 2014-05-26  
添子明 写道
刚刚接触,不知道spring要导入那些包

用不知道,直接用MyEclipse添加spring就可以了
5 楼 添子明 2014-05-21  
刚刚接触,不知道spring要导入那些包
4 楼 szmq2 2013-02-04  
b30164 写道
知道了 是jar包版本的问题 真是烦人

我也是jar包的版本问题,我是用的org.springframework.data.mongodb.core.MongoTemplate的方式,好多jar包版本不兼容,请问兄弟你调试通过了没有?
3 楼 chenshengzun 2012-07-23  
b30164 写道
知道了 是jar包版本的问题 真是烦人

不好意思,最近比较少上,没有留意到你的留言
2 楼 b30164 2012-06-18  
知道了 是jar包版本的问题 真是烦人
1 楼 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无默认构造方法造成的,有没有解决方案,谢谢

相关推荐

    mongodb整合spring、hibernate、mysql

    在这个项目中,“mongodb整合spring、hibernate、mysql”意味着开发者将MongoDB作为NoSQL数据库,Spring作为应用的管理和数据访问层,而Hibernate则用于处理MySQL的关系型数据库操作。这样的集成允许应用同时利用两...

    mongodb整合spring文档

    ### Spring 整合 MongoDB 数据库配置详解 #### 一、前言 在现代软件开发过程中,集成NoSQL数据库如MongoDB已成为一种趋势,特别是在需要处理大量非结构化数据的应用场景中。Spring框架作为Java领域中非常流行的...

    JAVA操作MongoDB之spring整合

    在本文中,我们将深入探讨如何使用Java操作MongoDB并结合Spring框架进行整合。MongoDB是一个流行的NoSQL数据库,它以JSON格式存储数据,适合处理大量非结构化或半结构化数据。Spring框架则是一个强大的Java企业级...

    spring 整合mongodb

    本文将深入探讨如何整合Spring框架与MongoDB,以实现高效的数据存储和检索。 首先,Spring Data MongoDB是Spring框架的一个模块,它提供了与MongoDB集成的简单API和ORM(对象关系映射)功能。Spring Data MongoDB...

    mongodb&spring&struts&springdatamongodb整合,带所有jar,需要的拿走

    本项目整合了这四个技术,使得开发者可以在Java Web应用程序中高效地利用MongoDB作为非关系型数据库,Spring作为依赖注入和管理容器,Struts作为前端控制器,Spring Data MongoDB则简化了对MongoDB的操作。...

    MongoDB与Spring整合

    当我们将MongoDB与Spring整合时,可以充分利用Spring的依赖注入和数据访问抽象,简化MongoDB在Java应用中的使用。 首先,整合MongoDB与Spring的关键在于Spring Data MongoDB模块,它提供了对MongoDB的数据访问支持...

    mongodb-spring 整合包

    当我们将MongoDB与Spring整合时,可以利用Spring的强大功能来简化MongoDB的使用,提高开发效率。本整合包正是针对这一需求而准备的,它包含了实现MongoDB与Spring集成所需的所有组件。 首先,我们需要了解MongoDB-...

    MongoDB整合Spring实例详细讲解(含代码)

    总之,MongoDB与Spring的整合涉及配置MongoDB连接、创建MongoTemplate实例,以及利用Spring Data MongoDB的Repository模式进行数据访问。正确配置和使用这些组件,可以帮助开发者快速构建高效、灵活的MongoDB驱动的...

    Spring+MongoDB整合 项目

    项目整合Spring和MongoDB,主要涉及以下几个核心模块: 1. **数据访问层**:Spring Data MongoDB模块提供了与MongoDB的集成,包括MongoTemplate和MongoRepository接口,使得操作MongoDB就像操作传统JDBC一样简单。...

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

    在整合Spring和MongoDB时,你需要以下核心组件: 1. **MongoDB Java驱动**:这是与MongoDB服务器通信的基础,提供了连接、查询、更新等操作。在本实例中,包含的jar包应包含此驱动。 2. **Spring Data MongoDB**:...

    spring mvc + spring + mongodb 整合

    使用spring mvc + spring data mongodb + mongodb +spring 整合,支持html压缩,支持mongodb用户登录,重写了spring的MongoTemplate支持更多方式,重写MongoTemplate支持切换数据库,支持mongodb集群。spring版本为...

    spring-springMVC-mongodb整合例子

    这个例子中的"spring-springMVC-mongodb整合"是一个很好的学习和实践项目,可以帮助开发者深入理解这些技术的结合使用。通过这样的整合,开发者能够构建出更加灵活、适应现代互联网需求的应用程序。

    springboot-mongodb整合源码

    在IT行业中,Spring Boot和MongoDB的整合是一个常见的任务,特别是在构建微服务或者快速开发Web应用时。Spring Boot简化了Spring应用的初始设置,而MongoDB则作为一个强大的NoSQL数据库,提供非结构化数据的存储解决...

    spring-mongodb整合

    当我们谈论“Spring-MongoDB整合”时,这意味着我们要将Spring框架与MongoDB数据库集成,以便在Java应用中充分利用MongoDB的优势。 首先,我们需要理解Spring Data MongoDB项目,它是Spring Data模块的一部分,旨在...

    spring-mongodb整合源码 注释

    在本文中,我们将深入探讨如何将Spring框架与MongoDB数据库进行整合,并且会结合源码进行分析,以帮助你理解其工作原理。Spring是Java领域广泛使用的轻量级框架,而MongoDB则是一种非关系型数据库(NoSQL),两者...

    maven(jersey+redis+mongodb+spring)集成

    【标题】:“maven(jersey+redis+mongodb+spring)集成” 在现代软件开发中,集成多种技术栈是常见的需求。"maven(jersey+redis+mongodb+spring)集成"指的是使用Maven作为项目构建工具,将Jersey用于RESTful API开发...

    Spring-Mongodb例子

    Spring与MongoDB的整合主要涉及以下几个关键组件: 1. **MongoTemplate**:这是Spring Data MongoDB提供的核心模板类,用于执行MongoDB的各种操作,如查询、更新、插入等。MongoTemplate提供了对数据库操作的抽象,...

    spring-data-mongodb

    自己开发能跑的项目 spring-data-mongodb整合spring-boot

    源码-spring+MongoDB的整合

    当我们需要将Spring与MongoDB整合时,目的是利用Spring的优秀管理和组织能力来操作MongoDB的数据存储。 首先,我们要了解Spring Data MongoDB项目,这是Spring框架对MongoDB支持的一部分。Spring Data MongoDB提供...

Global site tag (gtag.js) - Google Analytics