您的位置:首页 > 数据库 > Mongodb

MongoDB整合Spring 详细讲解

2014-09-16 19:19 399 查看
下载版本分别为:

spring-data-commons-dist-1.4.0.M1

spring-data-document-1.0.0.M2.zip

下面给出我工程的图片



然后就开始我们开发之旅吧!

首先新建application.xml配置文件

[html] view
plaincopy





<span style="font-size:18px;color:#3366ff;"><?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="192.168.0.138" port="27017"/>

<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.dao.impl.PersonRepository">

<property name="mongoTemplate" ref="mongoTemplate"></property>

</bean>

<context:annotation-config />

</beans>

</span>

然后编写操作mongodb的接口

[java] view
plaincopy





<span style="font-size:18px;color:#3366ff;">/**

* AbstractRepository.java

* 版权所有(C) 2012

* 创建:cuiran 2012-12-12 11:40:40

*/

package com.mongo.dao;

import java.util.List;

import com.mongo.bean.Person;

/**

* TODO

* @author cuiran

* @version TODO

*/

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);

}

</span>

再写对应接口的实现类:

[java] view
plaincopy





<span style="font-size:18px;color:#3366ff;">/**

* PersonRepository.java

* 版权所有(C) 2012

* 创建:cuiran 2012-12-12 11:42:51

*/

package com.mongo.dao.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 com.mongo.bean.Person;

import com.mongo.dao.AbstractRepository;

/**

* TODO

* @author cuiran

* @version TODO

*/

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;

}

}

</span>

这里也给出对应Person对象代码

[java] view
plaincopy





<span style="font-size:18px;color:#3366ff;">/**

* Person.java

* 版权所有(C) 2012

* 创建:cuiran 2012-12-12 11:37:16

*/

package com.mongo.bean;

import java.io.Serializable;

/**

* TODO

* @author cuiran

* @version TODO

*/

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+"]";

}

}

</span>

最后写出我们的测试类开始进行测试

[java] view
plaincopy





<span style="font-size:18px;color:#3366ff;">/**

* MongoTest.java

* 版权所有(C) 2012

* 创建:cuiran 2012-12-12 11:54:30

*/

package com.mongo.test;

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.mongo.bean.Person;

import com.mongo.dao.AbstractRepository;

import com.mongo.dao.impl.PersonRepository;

/**

* TODO

* @author cuiran

* @version TODO

*/

public class MongoTest {

private static Log log = LogFactory.getLog(MongoTest.class.getName());

private AbstractRepository pr=null;

/**

*

*<b>function:</b>

* @author cuiran

* @createDate 2012-12-12 16:08:02

*/

public void init(){

log.debug("开始启动");

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");

pr= (PersonRepository)ctx.getBean("personRepository");

}

/**

*

*<b>function:</b>添加

* @author cuiran

* @createDate 2012-12-12 16:11:01

*/

public void insert(){

Person p=new Person("cuiran",27);

pr.insert(p);

log.debug("添加成功");

}

/**

*

*<b>function:</b>根据输入的ID查找对象

* @author cuiran

* @createDate 2012-12-12 16:24:10

*/

public void findOne(){

String id="50c83cb552c2ceb0463177d6";

Person p= pr.findOne(id);

log.debug(p);

}

/**

*

*<b>function:</b>查询所有

* @author cuiran

* @createDate 2012-12-12 16:08:54

*/

public void listAll(){

List<Person> list=pr.findAll();

log.debug("查询结果如下:");

for (Person p:list){

log.debug(p.toString());

}

}

/**

*

*<b>function:</b>测试方法

* @author cuiran

* @createDate 2012-12-12 16:11:37

*/

public void start(){

init();

//insert();

//listAll();

findOne();

}

/**

*<b>function:</b>main函数

* @author cuiran

* @createDate 2012-12-12 11:54:30

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

MongoTest t=new MongoTest();

t.start();

}

}

</span>

运行出现一下日志,就没什么问题。

[java] view
plaincopy





<span style="font-size:18px;color:#3366ff;">2012-12-12 16:23:59:DEBUG com.mongo.test.MongoTest - 开始启动

2012-12-12 16:23:59:INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@253498: startup date [Wed Dec 12 16:23:59 CST 2012]; root of context hierarchy

2012-12-12 16:23:59:INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]

2012-12-12 16:24:00:INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Pre-instantiating singletons in org.springframework.beans.factory.support.DefaultListableBeanFactory@12a0f6c: defining beans [mongo,mongoTemplate,personRepository,org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor]; root of factory hierarchy

2012-12-12 16:24:00:DEBUG com.mongo.test.MongoTest - Person[id=50c83cb552c2ceb0463177d6,name=cuiran,age=27]

</span>

在此附上demo源码欢迎朋友下载学习

百度网盘:http://pan.baidu.com/s/188Lnr
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: