簡單的spring-data集成mongoDB項目,實現crud的功能

集成了spring框架的jar,加上三個spring-data的jar和一個驅動包java

用IDE開發工具新建一個java 項目,須要spring框架的包,和spring-data須要的包,分別是spring

包下的三個包:spring-data-mongodbmongodb

,spring-data-mongodb-cross-store,spring-data-mongodb-log4j。數據庫

以及mongoDB數據庫的驅動包mongo-2.8.0.jar,也須要commons-logging-1.0.4和log4j-1.2.17.jar包,若是還缺乏什麼包,更加報錯添加便可express

項目須要的目錄結構:app

每一個類中完整的代碼貼出以下:框架

實體類:ide

這裏也解釋一下代碼註解函數

<!--解釋開始-->工具

spring-data-mongodb中的實體映射是經過

MongoMappingConverter這個類實現的。它能夠經過註釋把

java類轉換爲mongodb的文檔。
它有如下幾種註釋:
@Id - 文檔的惟一標識,在mongodb中爲ObjectId,它是惟一的,經過時間戳+機器標識+進程ID+自增計數器(確保同一秒內產生的Id不會衝突)構成。

@Document - 把一個java類聲明爲mongodb的文檔,能夠通

過collection參數指定這個類對應的文檔。

@DBRef - 聲明相似於關係數據庫的關聯關係。

@Indexed - 聲明該字段須要索引,建索引能夠大大的提升查詢效率。

@CompoundIndex - 複合索引的聲明,建複合索引能夠有效地提升多字段的查詢效率。

@GeoSpatialIndexed - 聲明該字段爲地理信息的索引。

@Transient - 映射忽略的字段,該字段不會保存到

mongodb。

@PersistenceConstructor - 聲明構造函數,做用是把從數據庫取出的數據實例化爲對象。該構造函數傳入的值爲從DBObject中取出的數據。

<!--解釋結束-->

package main.pojo;


import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document
public class Tree {
    @Id
    private String id;
    private String name;
    private String category;
    private int age;
    public Tree(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 String getCategory() {
        return category;
    }
    public void setCategory(String category) {
        this.category = category;
    }
    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
                + ", category=" + category + "]";
    }
}

 

鏈接mongodb的dao層

package main.dao;


import com.mongodb.WriteResult;


import java.util.List;


public interface Repository<T> {
    //方法接口
    public List<T> getAllObjects();


    public void saveObject(T object);


    public T getObject(String id);


    public WriteResult updateObject(String id, String name);


    public void deleteObject(String id);


    public void createCollection();


    public void dropCollection();




}

 

實現類:

package main.impl;


import com.mongodb.WriteResult;
import main.dao.Repository;
import main.pojo.Tree;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;


import java.util.List;

public class RepositoryImpl implements Repository<Tree>{
    MongoTemplate mongoTemplate;


//    Repository repository;
//
//    public void setRepository(Repository repository) {
//        this.repository = repository;
//    }


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


    //查詢
    public List<Tree> getAllObjects() {
        return mongoTemplate.findAll(Tree.class);
    }


    //增長
    public void saveObject(Tree tree) {
        mongoTemplate.insert(tree);
    }


    //查詢
    public Tree getObject(String id) {
        return mongoTemplate.findOne(new Query(Criteria.where("id").is(id)),  Tree.class);
    }


    //修改
    public WriteResult updateObject(String id, String name) {
        return mongoTemplate.updateFirst(
        new Query(Criteria.where("id").is(id)),
        Update.update("name", name), Tree.class);
    }


    //刪除
    public void deleteObject(String id) {
        mongoTemplate .remove(new Query(Criteria.where("id").is(id)), Tree.class);
    }


    public void createCollection() {
        if (!mongoTemplate.collectionExists(Tree.class)) {
            mongoTemplate.createCollection(Tree.class);
        }
    }


    public void dropCollection() {
        if (mongoTemplate.collectionExists(Tree.class)) {
            mongoTemplate.dropCollection(Tree.class);
        }
    }


}

 

applicationContext.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd


http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">


    <bean id="Repository"
    class="main.impl.RepositoryImpl">
    <property name="mongoTemplate" ref="mongoTemplate" />
    </bean>


    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongo" ref="mongo" />
    <constructor-arg name="databaseName" value="temp" />
    </bean>


    <bean id="mongo" class="org.springframework.data.mongodb.core.MongoFactoryBean">
    <property name="host" value="localhost" />
    <property name="port" value="27017" />
    </bean>


    <context:annotation-config />
            <!-- Scan components for annotations within the configured package -->
    <context:component-scan base-package="main">


    <context:exclude-filter type="annotation"
    expression="org.springframework.context.annotation.Configuration" />


    </context:component-scan>


 </beans>
 

最後是crud的測試類

package main.test;


import main.dao.Repository;
import main.impl.RepositoryImpl;
import main.pojo.Tree;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;


public class MongoTest {
    public static void main(String[] args) {
        System.out.println("進來了");
        ConfigurableApplicationContext context = new ClassPathXmlApplicationContext(
                "classpath:/main/applicationContext.xml");
        Repository repository = context.getBean(RepositoryImpl.class);
        // cleanup collection before insertion
        repository.dropCollection();
        // create collection
        repository.createCollection();
        //增長
        repository.saveObject(new Tree("1", "Apple Tree", 10));
        System.out.println("1. " + repository.getAllObjects());


        //增長和查詢
        repository.saveObject(new Tree("2", "Orange Tree", 3));
        System.out.println("2. " + repository.getAllObjects());
        System.out.println("Tree with id 1" + repository.getObject("1"));


        //修改
        repository.updateObject("1", "Peach Tree");
        System.out.println("3. " + repository.getAllObjects());


        //刪除
        repository.deleteObject("2");
        System.out.println("4. " + repository.getAllObjects());
    }


}

到此,簡單的spring-data集成 mongoDB的curd就完成了

後續有不少開發填坑的文章發佈,若是對你有幫助,請支持和加關注一下

http://e22a.com/h.05ApkG?cv=AAKHZXVo&sm=339944

https://shop119727980.taobao.com/?spm=0.0.0.0 

相關文章
相關標籤/搜索