使用SpringMVC实现对MongoDB简单的增删改查

之前我们介绍了MongoDB以及如何在Robo 3T中通过图形化界面或是在Shell中通过nosql语句进行增删改查,但是在实际应用中,我们不太会通过这两种方式来对MongoDB进行操作,接下来我们将介绍更为实用的方式,即在SpringMVC中实现对MongoDB的增删改查。

一、搭建SpringMVC工程

这里我们使用的IDE是IntelliJ IDEA,通过创建maven工程来搭建SpringMVC。

如何搭建SpringMVC不是我们的重点,并且已有许多相关资料,因此这里不再介绍。下面的工作基于已经成功在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");//指定数据库名称
    }
}

四、创建实体类(对应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;
    }
}

五、创建子实体类(对应一个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,则自动创建
    }

运行测试。

《使用SpringMVC实现对MongoDB简单的增删改查》 插入

七、查询

统计一个collection下的Document数。

long orderCount = mongo.getCollection("order").count();//统计一个collection下的文档数

根据Id查找。(最后一个参数”order”是collection名,可省略,下同)

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

查询。

List<Order> OrderList = mongo.find(Query.query(Criteria.where("customer").is("Tom")),Order.class,"order");//通过构造Query对象进行查询

多条件查询。

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

八、删除

删除order1对象在数据库中对应的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实现对MongoDB简单的增删改查就讲完啦。
    原文作者:YYYYT_____
    原文地址: https://www.jianshu.com/p/941a9ec2a93c
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞