`
chenhua_1984
  • 浏览: 1250343 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java Spring-data for mongodb

阅读更多

    spring项目提供了对大数据的支持,Spring-data 项目,其中有关于Spring Data ForMongodb的,研究了一下,弄了个小示例参考一下。

    application.xml

  

<?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" />

	<bean id="mongoTemplate" class="org.springframework.data.document.mongodb.MongoTemplate">
		<constructor-arg ref="mongo" />
		<constructor-arg name="databaseName" value="his" />
		<constructor-arg name="defaultCollectionName" value="person" />
	</bean>

	<bean id="personRepository" class="com.mongo.dao.impl.PersonRepository">
		<property name="mongoTemplate" ref="mongoTemplate"></property>
	</bean>

	<context:annotation-config />

</beans> 

   Person.java

package com.nbey.data.forward.mongo.persistence;

import java.io.Serializable;

public class Person implements Serializable {
	 private static final long serialVersionUID = 3617931430808763429L;  
     
	    private String id;     
	    private String name;     
	    private int age;  
	    public Person() {  
	        super();  
	    }  
	    public Person(String id, String name, int age) {  
	        super();  
	        this.id = id;  
	        this.name = name;  
	        this.age = age;  
	    }  
	    /** 
	     * @return the id 
	     */  
	    public String getId() {  
	        return id;  
	    }  
	    /** 
	     * @param id the id to set 
	     */  
	    public void setId(String id) {  
	        this.id = id;  
	    }  
	    /** 
	     * @return the name 
	     */  
	    public String getName() {  
	        return name;  
	    }  
	    /** 
	     * @param name the name to set 
	     */  
	    public void setName(String name) {  
	        this.name = name;  
	    }  
	    /** 
	     * @return the age 
	     */  
	    public int getAge() {  
	        return age;  
	    }  
	    /** 
	     * @param age the age to set 
	     */  
	    public void setAge(int age) {  
	        this.age = age;  
	    }  
	    /** 
	     *  
	     * @param name 
	     * @param age 
	     */  
	    public Person(String name, int age) {  
	        super();  
	        this.name = name;  
	        this.age = age;  
	    }     
	  
	     public String toString() {     
	            return "Person[id="+id+",name="+name+",age="+age+"]";     
	        }    
}

   interface  AbstractRepository.java

package com.nbey.data.forward.mongo.manager;

import java.util.List;

import com.nbey.data.forward.mongo.persistence.Person;

public interface AbstractRepository {
	/** 
     *  
     *<b>function:</b>��Ӷ��� 
     * @author cuiran 
     * @createDate 2012-12-12 11:41:30 
     */  
    public void insert(Person person);   
      
    /** 
     *  
     *<b>function:</b>���ID���Ҷ��� 
     * @author cuiran 
     * @createDate 2012-12-12 11:41:41 
     */  
    public Person findOne(String id);     
    /** 
     *  
     *<b>function:</b>��ѯ���� 
     * @author cuiran 
     * @createDate 2012-12-12 16:26:06 
     */  
    public List<Person> findAll();     
      
    public List<Person> findByRegex(String regex);  
    /** 
     *  
     *<b>function:</b>ɾ��ָ����ID���� 
     * @author cuiran 
     * @createDate 2012-12-12 16:26:16 
     */  
    public void removeOne(String id);     
    /** 
     *  
     *<b>function:</b>ɾ������ 
     * @author cuiran 
     * @createDate 2012-12-12 16:25:40 
     */  
    public void removeAll();     
    /** 
     * ͨ��ID�ҵ����޸� 
     *<b>function:</b> 
     * @author cuiran 
     * @createDate 2012-12-12 16:25:51 
     */  
    public void findAndModify(String id);     
  
}

  PersonRepository.java

 

package com.nbey.data.forward.mongo.manager.impl;

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 org.springframework.transaction.annotation.Transactional;

import com.nbey.data.forward.mongo.manager.AbstractRepository;
import com.nbey.data.forward.mongo.persistence.Person;

@Transactional
public class PersonRepository implements AbstractRepository {
	private MongoTemplate mongoTemplate;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#findAll()
	 */
	@Override
	public List<Person> findAll() {
		// TODO Auto-generated method stub
		return getMongoTemplate().find(new Query(), Person.class);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#findAndModify(java.lang.String)
	 */
	@Override
	public void findAndModify(String id) {
		// TODO Auto-generated method stub
		// new Query(Criteria.where("id").is(id)), new Update().inc("age", 3)

		getMongoTemplate().updateFirst(new Query(Criteria.where("id").is(id)),
				new Update().inc("age", 3));

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#findByRegex(java.lang.String)
	 */
	@Override
	public List<Person> findByRegex(String regex) {
		// TODO Auto-generated method stub
		Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
		Criteria criteria = new Criteria("name").regex(pattern.toString());
		return getMongoTemplate().find(new Query(criteria), Person.class);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#findOne(java.lang.String)
	 */
	@Override
	public Person findOne(String id) {
		// TODO Auto-generated method stub
		return getMongoTemplate().findOne(
				new Query(Criteria.where("id").is(id)), Person.class);

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#insert(com.mongo.bean.Person)
	 */
	@Override
	public void insert(Person person) {
		// TODO Auto-generated method stub
		getMongoTemplate().insert(person);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#removeAll()
	 */
	@Override
	public void removeAll() {
		// TODO Auto-generated method stub
		List<Person> list = this.findAll();
		if (list != null) {
			for (Person person : list) {
				getMongoTemplate().remove(person);
			}
		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.mongo.dao.AbstractRepository#removeOne(java.lang.String)
	 */
	@Override
	public void removeOne(String id) {
		// TODO Auto-generated method stub
		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));
		}

	}

	/**
	 * @return the mongoTemplate
	 */
	public MongoTemplate getMongoTemplate() {
		return mongoTemplate;
	}

	/**
	 * @param mongoTemplate
	 *            the mongoTemplate to set
	 */
	public void setMongoTemplate(MongoTemplate mongoTemplate) {
		this.mongoTemplate = mongoTemplate;
	}

}

  Main.java

 

package com.nbey.data.forward.mongo.startup;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.nbey.data.forward.mongo.manager.AbstractRepository;
import com.nbey.data.forward.mongo.manager.impl.PersonRepository;
import com.nbey.data.forward.mongo.persistence.Person;

public class Main {
	private static Log log = LogFactory.getLog(Main.class.getName());

	private AbstractRepository pr = null;

	public void init() {
		
		ApplicationContext ctx = new ClassPathXmlApplicationContext(
				"application.xml");
		pr = (PersonRepository) ctx.getBean("personRepository");
	}

	public void insert() {

		Person p = new Person("cuiran", 27);
		pr.insert(p);
		
	}

	public void findOne() {
		String id = "50c83cb552c2ceb0463177d6";
		Person p = pr.findOne(id);
		log.debug(p);
	}

	public void listAll() {

		List<Person> list = pr.findAll();
		
		for (Person p : list) {
			log.debug(p.toString());
		}

	}

	public void start() {
		init();

		insert();
		listAll();

		findOne();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Main t = new Main();
		t.start();
	}
}

 

分享到:
评论

相关推荐

    spring-data-mongodb增强工具包,简化 CRUD 操作,提供类mybatis plus的数据库操作体验

    spring-data-mongodb增强工具包,简化 CRUD 操作,提供类mybatis plus的数据库操作。传统关系型数据库及围绕它们构建的orm在项目开发中有很多难用的痛点,而mongodb这种文档性数据库的出现,完美的解决了sql数据库在...

    Spring-Data-MongoDB3.2

    - 添加依赖:在Maven或Gradle配置文件中添加Spring Data MongoDB和MongoDB Java驱动的依赖。 - 配置MongoDB连接:在Spring配置文件中指定MongoDB服务器的URL、端口、数据库名等信息。 - 创建MongoDBTemplate实例:...

    spring-data-mongodb-parent-reference

    文档的标题为 "spring-data-mongodb-parent-reference",意味着这份PDF文档是关于如何使用Spring Data MongoDB的参考资料。文档的描述中提到该文档是2013年4月18日的版本,强调了官方文档的详细程度以及其对于Java...

    spring-data-mongodb-1.7.0.jar包.zip

    springmvc与mongoDB集成需要下面几个的jar包:mongo-java-driver-3.0.1.jarspring-data-commons-1.10.0.RELEASE.jarspring-data-commons-core-1.4.1.RELEASE.jarspring-data-mongodb-1.7.0.RELEASE.jar已经打包在...

    spring-data-mongodb1.2.0

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单而有效的方式来集成Spring应用程序与MongoDB数据库。这个"spring-data-mongodb1.2.0"版本是针对Spring Data MongoDB的1.2.0.RELEASE更新,它包含...

    spring-data-mongodb-3.1.8.jar中文-英文对照文档.zip

    中文-英文对照文档,中英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar中文文档.zip】,再解压其中的 【***-...

    spring-data-mongodb-1.2.0.RELEASE

    在 Spring Data MongoDB 中,数据以 Java 对象的形式表示,通过 MongoDBTemplate 或 MongoRepository 进行操作。 三、Spring Data MongoDB 1.2.0.RELEASE 新特性 1. 改进的查询构造器:1.2.0.RELEASE 版本增强了...

    spring-data-mongodb api

    Spring Data MongoDB API 是一个强大的Java库,用于简化与MongoDB数据库的交互。它作为Spring Data项目的一部分,提供了统一的编程模型,使得开发人员能够轻松地利用MongoDB的强大功能。Spring Data MongoDB API允许...

    spring-data-mongodb-reference 1.5.4

    ### Spring Data MongoDB 1.5.4 Reference Documentation #### 一、引言 Spring Data MongoDB 是 Spring Data 项目的一部分,旨在简化 MongoDB 数据访问,并提供一个一致的编程模型,该模型适用于 Spring ...

    Spring3+Spring-data-mongodb1.5.6示例

    在本示例中,我们将深入探讨如何在Spring 3框架中集成Spring Data MongoDB 1.5.6,以便高效地处理MongoDB数据库。Spring Data MongoDB是Spring Data项目的一部分,它提供了一个面向对象的API,使得与NoSQL数据库...

    spring-data-mongodb-cross-store-1.3.5.RELEASE.zip

    标题中的"spring-data-mongodb-cross-store-1.3.5.RELEASE.zip"表明这是一个关于Spring Data MongoDB Cross Store的开源项目,版本为1.3.5.RELEASE。Spring Data是Spring框架的一部分,它提供了与各种数据存储进行...

    spring-boot-starter-data-mongodb-2.2.4.RELEASE.jar

    java运行依赖jar包

    spring-data-mongodb-1.8.0.RELEASE(含源码)

    - **Aggregation**:Spring Data MongoDB 提供了聚合操作的 API,支持 MongoDB 的聚合管道,使得开发者可以在 Java 代码中方便地构建和执行聚合操作。 5. **事件监听** - **MongoEventListener**:Spring Data ...

    spring-data使用mongodbTemplate对MongoDB进行读写操作

    Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...

    spring-data-mongodb1.1.0.jar

    spring-data-mongodb1.1.0.jar包

    spring-data-mongodb-1.7.0

    包括spring-data-mongodb-1.7.0.jar、spring-data-commons-1.10.0.RELEASE.jar、spring-data-commons-core-1.4.1.RELEASE.jar、mongo-java-driver-3.0.1.jar 对应支持的mongoDB版本为3.0.3,自己整理好的方便大家...

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

    &lt;artifactId&gt;mongodb-driver-sync 版本号 ``` 接下来,配置MongoDB连接信息。在Spring Boot应用中,通常在application.properties或application.yml文件中配置MongoDB的相关属性,如数据库名、主机地址和端口...

    spring-data-mongodb-encrypt:轻量级的库,用于在mongodb + spring中进行简单轻松的按字段加密

    spring-data-mongodb-encrypt 允许将任何字段都标记为@Encrypted以进行逐字段加密。 产品特点 透明地集成到spring-data-mongodb 支持嵌套的集合,地图和bean 高性能(无反射,优化了加密) 密钥版本控制(以帮助...

    Spring-data + MongoDb源码

    Spring Data为MongoDB提供了一个强大的抽象层,使得开发者可以轻松地在Java应用中集成和操作MongoDB。 Spring Data MongoDB的核心概念是Repository抽象,它允许开发者定义自定义的查询方法,而无需编写SQL或MongoDB...

Global site tag (gtag.js) - Google Analytics