使用SpringMVC實現(xiàn)對MongoDB簡單的增刪改查

之前我們介紹了MongoDB以及如何在Robo 3T中通過圖形化界面或是在Shell中通過nosql語句進行增刪改查,但是在實際應(yīng)用中,我們不太會通過這兩種方式來對MongoDB進行操作,接下來我們將介紹更為實用的方式,即在SpringMVC中實現(xiàn)對MongoDB的增刪改查。

一、搭建SpringMVC工程

這里我們使用的IDE是IntelliJ IDEA,通過創(chuàng)建maven工程來搭建SpringMVC。

如何搭建SpringMVC不是我們的重點,并且已有許多相關(guān)資料,因此這里不再介紹。下面的工作基于已經(jīng)成功在maven工程中搭建好了SpringMVC。

二、添加maven依賴

我們使用Spring Data MongoDB來操作MongoDB,因此需要先在maven的pom.xml中添加相關(guān)依賴,并同步。

<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-commons</artifactId>
            <version>1.7.2.RELEASE</version>
</dependency>
<dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.4.2.RELEASE</version>
</dependency>
<dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>2.10.1</version>
</dependency>

三、MongoDB配置類

@Configuration
public class MongoConfig {
    //MongoClient bean
    @Bean
    public MongoFactoryBean mongo(){
        MongoFactoryBean mongo = new MongoFactoryBean();
        mongo.setHost("localhost");
        return mongo;
    }
    //MongoTemplate bean
    @Bean
    public MongoOperations mongoTemplate(Mongo mongo){
        return new MongoTemplate(mongo,"test1");//指定數(shù)據(jù)庫名稱
    }
}

四、創(chuàng)建實體類(對應(yīng)Document)

@Document
public class Order {
    @Id
    private String id;
    private String customer;
    private Collection<Item> items = new LinkedHashSet<Item>();
    public void setCustomer(String customer){
        this.customer = customer;
    }
    public String getCustomer() {return customer;}
    public String getId(){
        return id;
    }
    public void setItem(Collection<Item> items){
        this.items = items;
    }
    public Collection<Item> getItems(){
        return items;
    }
}

五、創(chuàng)建子實體類(對應(yīng)一個Document下的子Document)

public class Item {
    private Long itemID;
    private Order order;
    private String product;
    private double price;
    private int quantity;

    public Long getItemID(){
        return itemID;
    }
    public Order getOrder(){
        return order;
    }
    public String getProduct(){
        return product;
    }
    public double getPrice(){
        return price;
    }
    public int getQuantity(){
        return quantity;
    }
    public void  setItemID(Long itemID){
        this.itemID = itemID;
    }
    public void setProduct(String product){
        this.product = product;
    }
    public void setPrice(double price){
        this.price = price;
    }
    public void setQuantity(int quantity){
        this.quantity = quantity;
    }
}

六、插入

@Test
    public void insertTest() throws Exception{
        Order order = new Order();
        Item item1 = new Item();
        item1.setItemID((long) 1);
        item1.setPrice(100);
        item1.setQuantity(10);
        item1.setProduct("Cup");
        Item item2 = new Item();
        item2.setItemID((long) 2);
        item2.setPrice(50);
        item2.setQuantity(5);
        item2.setProduct("Desk");
        order.setCustomer("Tom");
        Collection<Item> ItemCollection = new LinkedHashSet<Item>();
        ItemCollection.add(item1);
        ItemCollection.add(item2);
        order.setItem(ItemCollection);
        mongo.save(order,"order");//在名為order的collection下增加一個Document,若沒有名為order的collection,則自動創(chuàng)建
    }

運行測試。


插入

七、查詢

統(tǒng)計一個collection下的Document數(shù)。

long orderCount = mongo.getCollection("order").count();//統(tǒng)計一個collection下的文檔數(shù)

根據(jù)Id查找。(最后一個參數(shù)"order"是collection名,可省略,下同)

String orderID = "5a747fa9a80e7722bfcbb372";
Order order1 = mongo.findById(orderID,Order.class,"order");//根據(jù)ID查找

查詢。

List<Order> OrderList = mongo.find(Query.query(Criteria.where("customer").is("Tom")),Order.class,"order");//通過構(gòu)造Query對象進行查詢

多條件查詢。

List<Order> OrderList1 = mongo.find(Query.query(Criteria.where("customer").is("Tom").and("sex").is("man")),Order.class,"order");//多條件查詢

八、刪除

刪除order1對象在數(shù)據(jù)庫中對應(yīng)的Document。

mongo.remove(order1,"order");//刪除對象(先要進行查找)

九、修改

將含有"customer":"Tom"的Document中的"customer":"Tom"改為"customer":"Mike"。

 mongo.updateMulti(Query.query(Criteria.where("customer").is("Tom")), Update.update("customer","Tom").set("customer","Mike"),Order.class,"order");//改

如果只修改一個Document,可將updateMulti()方法改成updateFirst()方法。

到這里,使用SpringMVC實現(xiàn)對MongoDB簡單的增刪改查就講完啦。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容