天天看點

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配置檔案如下: 

Java代碼 

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

    public String getId() {  

        return id;  

    public void setId(String id) {  

    public String getName() {  

        return name;  

    public void setName(String name) {  

    public int getAge() {  

        return age;  

    public void setAge(int 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.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.intf.AbstractRepository;  

public class PersonRepository implements AbstractRepository{  

    private MongoTemplate mongoTemplate;  

    public List<Person> findAll() {  

        return getMongoTemplate().find(new Query(), Person.class);  

    public void findAndModify(String id) {   

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

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

    public Person findOne(String id) {  

        return getMongoTemplate().findOne(new Query(Criteria.where("id").is(id)), Person.class);  

    public void insert(Person person) {  

        getMongoTemplate().insert(person);  

    public void removeAll() {  

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

        if(list != null){  

            for(Person person : list){  

                getMongoTemplate().remove(person);  

            }  

        }  

    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;  

}  

繼續閱讀