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

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

一溉卓、搭建SpringMVC工程

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

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

二爆阶、添加maven依賴

我們使用Spring Data MongoDB來操作MongoDB,因此需要先在maven的pom.xml中添加相關依賴代赁,并同步扰她。

<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)建實體類(對應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)建子實體類(對應一個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ù)庫中對應的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)系作者
  • 序言:七十年代末先誉,一起剝皮案震驚了整個濱河市湿刽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌谆膳,老刑警劉巖叭爱,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異漱病,居然都是意外死亡买雾,警方通過查閱死者的電腦和手機把曼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來漓穿,“玉大人嗤军,你說我怎么就攤上這事』挝#” “怎么了叙赚?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長僚饭。 經(jīng)常有香客問我震叮,道長,這世上最難降的妖魔是什么鳍鸵? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任苇瓣,我火速辦了婚禮,結(jié)果婚禮上偿乖,老公的妹妹穿的比我還像新娘击罪。我一直安慰自己,他們只是感情好贪薪,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布媳禁。 她就那樣靜靜地躺著,像睡著了一般画切。 火紅的嫁衣襯著肌膚如雪竣稽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天霍弹,我揣著相機與錄音丧枪,去河邊找鬼。 笑死庞萍,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的忘闻。 我是一名探鬼主播钝计,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼齐佳!你這毒婦竟也來了私恬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤炼吴,失蹤者是張志新(化名)和其女友劉穎本鸣,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體硅蹦,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡荣德,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年闷煤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涮瞻。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡鲤拿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出署咽,到底是詐尸還是另有隱情近顷,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布宁否,位于F島的核電站窒升,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏慕匠。R本人自食惡果不足惜饱须,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望絮重。 院中可真熱鬧冤寿,春花似錦、人聲如沸青伤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狠角。三九已至号杠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間丰歌,已是汗流浹背姨蟋。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留立帖,地道東北人眼溶。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像晓勇,于是被迫代替她去往敵國和親堂飞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容